TString deletion causes "user breakpoint" in debug

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.

Ed Oltman
stringdelete.zip (4.69 KB)


as usual, I cannot reproduce this problem. Could be an incompatibility
between code compiled on VC++7 and code compiled in debug mode on VC++6.

I strongly encourage you to install Root from source on your system.


I installed root on my machine:

dated 9/13/2003 9:05AM

I built by typing into a cygwin window:

./configure win32gdk

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?


I do not understand your last message?
When does it work? and when not?

I have no way to test the compatibility with VC++6 myself.


Hi Rene,
Sorry for the vague message.

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.

Thank you for your attention.



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.


Hi Ed, Rene,
I also cannot reproduce it.
Ed, you need to apply Service Pack5
microsoft.com/ntserver/nts/d … allsp5.asp

Regards. Valeriy

Bottom line: I still have the problem.

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.