vermutlich sind hier nicht allzuviele Leute unterwegs, die mit dem Debugging von C Programmen unter Linux viel Erfahrung haben, aber ich probier's trotzdem mal:
Mein Programm legt dynamisch Speicher an (malloc oder calloc), verwendet diesen und gibt ihn anschließend wieder frei. Da man hier gerne mal was falsch macht habe ich das ganze mal mit -lefence kompiliert und habe auch prompt einen Fehler gefunden - normalerweise schlägt Efence ja genau bei der Anweisung die den Fehler verursacht Alarm. Das war in dem Fall allerdings ein malloc, woraus ich nicht so recht schlau wurde. Also habe ich das Programm mit valgrind untersucht um potenzielle Probleme zu entdecken - auch hier habe ich einiges gefunden, diese Fehler sind inzwischen aber raus, valgrind spuckt keine Fehler mehr aus. Trotzdem schlägt Efence noch immer bei der selben malloc Anweisung Alarm.
Um auszuschließen, dass das ganze von einem früheren Fehler verursacht wird habe ich das Programm anschließend auf die notwendigsten Segmente gekürzt, so dass effektiv jetzt nur noch Speicher festgelegt und freigegeben wird. Valgrind meldet wieder keine Probleme, efence schon, immer noch an der selben Stelle. Ich nutze die Pakete aus den üblichen Paketquellen für Ubuntu 12.04.
Hat jemand eine Idee, woran das liegen könnte?
Hier das minimalisierte Beispiel: https://www.phpbb.de/support/pastebin.p ... iew&s=1235 (die seltsame Benutzung von jeweils zwei Variablen für die drei Dimensionen hat historische Gründe)
Kompiliert wurde mit
gcc -Wall -o test -ggdb <quellcodedatei>.c
bzw. gcc -Wall -o test -ggdb <quellcodedatei>.c -lefence
. -Wextra
spuckt auch nichts zusätzliches aus.