Tengo problema muy extraño y como no me es posible enviar el código, intentaré explicarlo.¿Cómo puede un cambio pequeño en un código que nunca se ejecuta hacer la diferencia?
Esto es más como un problema filosófico - Espero que alguien tenga tiempo/conocimiento para pensar sobre esto.
1) He project.cpp se ve exactamente como esto:
#include <pthread.h>
#include <unistd.h>
pthread_t pplayer_thread;
void *play(void*);
int main(int argc, char **argv) {
pthread_create(&pplayer_thread, NULL, play_cb, NULL);
usleep(5000000);
return 0;
}
2) pplayer.cpp buscando algo como esto:
...
void *play_cb(void *arg) {
// this starts movie using gstreamer and exits thread
}
...
3) not_executed _from_main.cpp buscando algo como este:
...
extern MyClass *myObj; // this is included from .h file
...
MyClass *myObj = NULL;
...
some_function() {
...
myObj = MyClass::createNew(args);
...
}
...
Esto es todo linke d junto con varias otras bibliotecas y tonelada de basura, pero esto es básicamente lo que es importante.
-> Problema :
Cuando ejecuto esto, yo debería ver la ventana jugando clip de película usando GStreamer durante 5 segundos ->pero sólo escuchar el sonido!
->Lo extraño:
cuando comento la línea:
myObj = MyClass::createNew(args);
y correr de nuevo -> Veo ventana GStreamer también (todo está bien)
->Notas:
esto puede tener algo que ver con:
- proceso de vinculación y naturaleza de MiClase y es la clase padre (mi mejor conjetura)
- palabra clave "estática"
- palabra clave "externa"
- C y C++ mezclando
->te pido una vez más:
¿Cómo puede un cambio pequeño en un código que nunca se ejecuta hacer la diferencia?
(por favor ayuda)
Problemas de memoria probables, verifique con valgrind – academicRobot
Intente ejecutar el programa bajo valgrind y vea si hay stackoverflows/leaks de memoria/double frees/. –
orlp
No debería haber diferencia. Pero parece que tu 'not_executed_from_main.cpp' está marcando una diferencia de la que no eres consciente. ¿Podría mostrarnos más de este archivo .cpp y .h? –