Mi aplicación segmenta a veces y principalmente en malloc() y malloc_consolidate() cuando miro la traza inversa en gdb.Segfaults en malloc() y malloc_consolidate()
Comprobé que la máquina tiene suficiente memoria disponible, ni siquiera comenzó a intercambiar. Comprobé los ulimits para el segement de datos y el tamaño máximo de la memoria, y ambos están configurados como "ilimitados". También ejecuté la aplicación en valgrind y no encontré ningún error de memoria.
Ahora ya no tengo ideas sobre qué más podría estar causando estos segfaults. Algunas ideas ?
Actualización: ya que no estoy descubriendo nada con valgrind (o ptrcheck), ¿podría ser que otra aplicación está destrozando la estructura de la memoria de libc o hay una estructura separada para cada proceso?
¿Has tenido un accidente en valgrind? –
No, no se colgó. Es una aplicación en tiempo real y bajo valgrind solo puedo cargarlo con mucha ligereza y generalmente solo se cuelga bajo una carga más pesada. –
¿Qué sistema operativo es este? A juzgar por la cadena de herramientas, parece que puede ser Linux. En este caso, no, otras aplicaciones no pueden destrozar su pila; es algo en tu aplicación. Si esto solo ocurre bajo carga, eso lo hace aún más difícil por supuesto ... ¿Qué es diferente bajo carga? ¿Cómo podría estar causando que arruines el montón? Intenta "torturar" tu aplicación lo mejor que puedas mientras se ejecuta en Valgrind ... ¿cómo puedes reproducir mejor las condiciones que existirían bajo carga? Tal vez asignar memoria gratuitamente, algo así? –