M
leider besteht das problem nach wie vor.
zu unregelmäßigen zeitpunkten bekomme ich den fehler
assert "m_refData->m_count > 0" failed in wxObject::UnRef(): invalid ref data count
an einer vermeindlich harmlose codestelle:
allBtmpMutex->Lock();
wxBitmap *all = getAllBitmap();
if(all->IsOk()){
wxClientDC dc(this); // crash hier oder
if(dc.IsOk()){
dc.DrawBitmap(*all, 0, 0); // hier
}
}
allBtmpMutex->Unlock();
was ich nicht verstehe ist, dass wenn ich mir this->getRefData() VOR dem crash ansehen will, es auch dann nicht initialisiert ist.
ich dachte auch schon, es wäre vielleicht ein memory problem, das erst immer an dieser stelle durchschlägt. ich habe aber das programm mit application verifier mit dem standard checks laufen lassen und keinerlei probleme gemeldet bekommen.
ich habe diese crashs jetzt schon seit monaten und etliche tage darauf verwendet, um dem problem näher zu kommen.
etwas, was mich daran hindert ist, dass ich den call stack nicht lückenlos zurückverfolgen kann, weil ich keine symbole für wxWidgets laden kann (siehe http://www.c-plusplus.net/forum/288102).
hier mein call stack beim absturz:
ntdll.dll!_DbgBreakPoint@0()
wxbase28ud_vc_custom.dll!007bb739()
[Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für wxbase28ud_vc_custom.dll]
wxbase28ud_vc_custom.dll!007bbb04()
wxbase28ud_vc_custom.dll!007bb029()
wxbase28ud_vc_custom.dll!007bb814()
wxbase28ud_vc_custom.dll!0083bf82()
wxbase28ud_vc_custom.dll!0083bf0f()
wxbase28ud_vc_custom.dll!007bd12b()
wxmsw28ud_core_vc_custom.dll!009f1f24()
wxmsw28ud_core_vc_custom.dll!00a43633()
wxmsw28ud_core_vc_custom.dll!00a43713()
wxmsw28ud_core_vc_custom.dll!00af8d6a()
wxmsw28ud_core_vc_custom.dll!00afdaa7()
wxmsw28ud_core_vc_custom.dll!00afdc3f()
wxmsw28ud_core_vc_custom.dll!00afdc0c() // <- ab hier keine symbole vorhanden
> myProg.exe!PlotterBaseCont::doStepDirectly(int start=0, int stop=24) Zeile 76 + 0x12 Bytes C++
myProg.exe!ModePanelFrame::onSampleData() Zeile 247 C++
myProg.exe!raiseSampleEvent() Zeile 71 C++
da.dll!onSampleData() Zeile 30 + 0x8 Bytes C++
da.dll!EveryNCallback(void * taskHandle=0x6deb1cc0, long everyNsamplesEventType=1, unsigned long nSamples=25, void * callbackData=0x0208de50) Zeile 133 C++
nicaiu.dll!6d9cce13()
nidmxfu.dll!6db9e6da()
nidmxfu.dll!6db85d7b()
nipalu.dll!6400cbc3()
nipalu.dll!6402f97a()
nipalut.dll!6450113e()
kernel32.dll!7c80b729()
die niXYZ.dll´s am ende sind von national instruments, deren gerät erzeugt die daten, die dann auf dem bildschirm dargestellt werden.
hat jemand noch irgendeine idee dazu? ich dreh langsam durch....
danke!