Large ROOT application intermittently crashes in TList()

Hello ROOTers,

We have a rather large VS2008 C++ application using ROOT 5.28, on a Win32 system. It collects data from several USB DAQ devices and a custom fpga, and continuously displays several plots of the data.

One site has intermittent crashes; it typically crashes about once a day. Using a BugTrap facility, I intercept the crash and write out a dump file. Many of the dumps show this stack trace:

Genesis2.exe caused ACCESS_VIOLATION in module “C:\root\bin\libCore.dll” at 001B:01007F35, TList::FindLink()+53 byte(s)

“C:\root\bin\libCore.dll” at 001B:01007F35, TList::FindLink()+53 byte(s)
“C:\root\bin\libCore.dll” at 001B:010080DE, TList::Remove()+30 byte(s)
“C:\root\bin\libCore.dll” at 001B:01006993, THashList::Remove()+35 byte(s)
“C:\root\bin\libCore.dll” at 001B:00FC41B4, TObjectSpy::~TObjectSpy()+100 byte(s)
“C:\root\bin\libGui.dll” at 001B:01C14EF1, TGClient::HandleEvent()+225 byte(s)
“C:\root\bin\gdk-1.3.dll” at 001B:05FF280D, gdk_event_free()+221 byte(s)

Can you help provide some clues how to debug and resolve this?
I could provide you with the crashdump (8megs) and our symbol files.

thank you very much,

Hi buddy,

Well, I think the only way to debug this would be to attach the debugger when the application crashes, if you are using the debug version of ROOT…

Cheers, Bertrand.

This looks like a potential thread-safety issue… would be useful to compile the application with debug information (I’m not sure how to do that in Windows though…) and see if you can get a longer stack trace.