User Tag List

Resultados 1 al 4 de 4

Tema: [Programacion] EXC_BAD_ACCESS en OSX con boost

  1. #1

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    8,155
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,943
    Agradecer Thanks Received 
    2,356
    Thanked in
    Agradecido 1,567 veces en [ARG:2 UNDEFINED] posts

    [Programacion] EXC_BAD_ACCESS en OSX con boost

    Tengo hecho un ensamblador de 68000 y GPU/DSP en C++, hace un tiempo estuve cambiando trozos del código para usar las librerías boost y así aprendo como van.

    Ahora mismo estoy usando las format para imprimir, filesystem (*) para acceder a los ficheros, program_options (*) y system (*), las que llevan un * es porque hace falta compilarlas.

    Lo raro es que cuando hice esto hace un año o así con las boost 1.44 (IIRC) funcionaba bien, cuando cambie a mavericks comprobé que los casos de prueba que tenia en otras aplicaciones mostraban los mensajes mal, supongo que era porque las librerías las compile con el lion, o porque estaba usando otro compilador (gcc, llvm).

    Asi que se me ocurrio actualizar las boost, recopilar las librerías, recopilar el ensamblador porque quiero añadirle cosas y cuando voy a probar me da este error (EXC_BAD_ACCESS), ahora mismo me lo da incluso al hacer un std::cout incluso si lo pongo al principio, el otro día me daba el error al hacer un format (es como un printf) y la librería esta no hace falta compilarla porque son todo templates.

    ¿Alguna idea de que leches le pasa? ¿Hay alguna forma de saber si una librería dinámica lleva la mismas opciones de compilación que tu aplicación? ¿Alquien sabe de alguna aplicación estilo el depends de windows para osx?

    Es que ya no se que hacer, una opción seria añadir los ficheros de las boost al proyecto y compilarlo todo junto...

  2. #2

    Fecha de ingreso
    Jun 2004
    Ubicación
    Vivo en el pito foro...
    Mensajes
    20,707
    Mencionado
    70 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    233
    Agradecer Thanks Received 
    763
    Thanked in
    Agradecido 475 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    28
    Sin leerme mucho por encima y con mis limitados conocimientos, has mirado si estás usando librerías de 32 en vez de 64?

    Google fu dice que se te corrompen los punteros http://loufranco.com/blog/understanding-exc_bad_access

  3. #3

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    8,155
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,943
    Agradecer Thanks Received 
    2,356
    Thanked in
    Agradecido 1,567 veces en [ARG:2 UNDEFINED] posts
    Se supone que estoy compilando todo en 64bits, un poco burro para ser un simple ensamblador...

    Le echare un vistazo al enlace.

    -----Actualizado-----

    Al final he añadido los ficheros de las boost al proyecto y funciona, es una chapuza pero C'est la vie

    -----Actualizado-----

    Pues no... tiene poltergeist el programa, si pongo un breakpoint al principio y le doy a ejecutar con un fichero de pruebas gordo, me da error de sintaxis en una linea que esta bien y termina la aplicación, debería seguir intentando ensamblar. Si quito el break point me sale el mismo error y da un EXC_BAD_ACCESS...

    Que raro, el codigo esta super depurado y no tengo perdidas de memoria ni dejo ficheros abiertos, ni tengo buffer overflows.

    -----Actualizado-----

    Es medio aleatorio, hay veces que falla en una linea, otras veces en otra.

    Creo que el problema esta en la tabla de símbolos, es probable, la hice hace eones cuando estaba aprendiendo las STL y no le he pegado un repaso...

  4. #4

    Fecha de ingreso
    Sep 2006
    Ubicación
    Malaga
    Mensajes
    8,155
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,943
    Agradecer Thanks Received 
    2,356
    Thanked in
    Agradecido 1,567 veces en [ARG:2 UNDEFINED] posts
    Por si alguno tiene problemas parecidos:

    He tenido que cambiar bastante código y aun no he terminado pero el problema es que la aplicación creaba objetos en el heap y se los pasaba a la librería de la tabla de símbolos, y esta se "apropiaba" de los objetos y se encarga de borrarlos.

    Se simplificaba bastante si lo hacia así, pero no es buena idea que los objetos que se crean en un lado (aplicacion) se liberen en otro sitio (libreria).

    Lo curioso es que la aplicación iba bien en BeOS, Windows y SnowLeopard, pero al cambiar a Mavericks... boom!!!

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •