I am running gdk version of root 3.10/0 (and have observed the problem with earlier version too - both gdk and win32) on win2k. When running compiled code in the debugger (msdev v6.0) , I get “user breakpoint” errors when I delete TStrings objects. I can continue after them ,but they are annoying and perhaps indicate some underlying problem… I get no errors when the code (debug or release) is run outside the debugger. I’ve included an msdev project that demonstrates this problem see test1.readme for instructions.
Note: I’ve use the msdev v7.net dlls’ from ftp://root.cern.ch/root, as I’m using msdev v6. I build 3.05/5 from sources (thus avoiding the need for these extra dlls) - and I still get the user breakpoint in the debbuger.
It still causes the user breakpoint. You were able to step over the delete fString1 statement in test::~test() without incident? Is it possible that root no longer works properly with VC++6.0?
When I debug build root from sources, I do not get the error I reported. Why is it that TString requires the debug libraries to delete in the debugger w/o causing a “user breakpoint” but, e.g. TH1F does not?
When I use v3.10/00 gdk binaries from cern (which requires me to use the .net dll’s) OR when I build v3.10/00 gdk in release mode from cern sources using visual c++ 6.0, then “it does not work” - that is, if I build the project I posted yesterday using these libraries and run the debugger and step over the TString deletion line, I get the “user breakpoint” alert box with the message “HEAP[root.exe]: Invalid Address specified to RtlFreeHeap…”
When I build v3.10/00 gdk in debug mode from sources using vc++ 6.0, then “it does work” - that is, when I build yesterday’s project using these libraries and I step over the TString delete statement, there is no “user breakpoint” alert box.
Did you apply all service packs from MS to your VC++6?
I had similar problems on my old system before applying all
service packs. Valeri Fine may want to comment on this.
With VC++7, I had to compile the class TLatex in debug mode (this
is done automatically by our makefile). Compiling with optimisation
generated a funny behaviour when leaving the application.
Details:
I (reinstalled) SP5 on machine just to be safe. Then I re-built the win32gdk binaries (NOT in debug) from sources. Then I re-built (debug) the above project, ran it in the debugger, and got the “User Breakpoint” with the “HEAP[root.exe]: Invalid Address specified to RtlFreeHeap…” message on the TString deletion line. This is all using VC++ 6.0 w/ sp5.