corruption of the heap
-
Hallo,
ich habe zur Zeit folgendne fehler:
Windows has triggered a breakpoint in .exe.
This may be due to a corruption of the heap, which indicates a bug in
.exe or any of the DLLs it has loaded.This may also be due to the user pressing F12 while .exe has focus.
an folgender stelle im Code.
kann mir hier jemand sagen warum. Fehler trat das erste mal nach statischem linken im release Mode auf. Ich hab schon versucht den Debug Head abzuschalten alerdings ohne erfolg.if(!my_shm_List->empty()) { temp_package.LIID = it->LIID; temp_package.phyAdr = it->phyAdr; temp_package.prot = it->prot; temp_package.data = it->data; temp_package.timestamp = it->timestamp; mtx->lock(); my_shm_List->pop_front(); // through ERROR in RELEASE MODE mtx->unlock(); }
Liste ist ein shared memory from Boost.
-
Hm... Gehe mal besten mal mit dem Debugger durch und schau dir den Kontext des Fehlers an (haben die Variablen/Container erwartete Werte etc.)
it
ist gültig?Ansonsten versuch den Code auf ein Minimalbeispiel zu reduzieren.
-
heap schrieb:
Liste ist ein shared memory from Boost.
Ich kenne shared memory von Boost nicht. Aber hast du beachtet, dass hier evtl. unterschiedliche Allokatoren benutzt sein könnten? pop_front() klingt mir verdächtig nach Freigabe eines Objektes. Die Frage in diesem Zusammenhang ist auch, inwieweit die shared memory im Heap liegt? Der Heap ist doch eigentlich Prozess-abhängig und shared memory, wie der Name schon sagt, ein interprozess Speicher.
-
Siehe auch:
http://blog.m-ri.de/index.php/2008/10/27/vs-tipps-tricks-heap-bugs-finden-teil-1/
http://blog.m-ri.de/index.php/2008/10/31/vs-tipps-tricks-heap-bugs-finden-teil-2/
http://blog.m-ri.de/index.php/2008/11/04/vs-tipps-tricks-heap-bugs-finden-teil-3/
http://blog.m-ri.de/index.php/2008/11/27/vs-tipps-tricks-heap-bugs-finden-teil-4/
-
Boost shared memory funktioniert so, wie ich es erwartet hätte. Deswegen solltest du überprüfen, ob du die "Limitations When Constructing Objects In Mapped Regions" beachtet hast.