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)

Ed,

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.

Rene

Rene,
I installed root on my machine:

ftp://root.cern/ch/root/root_v3.10.00.source.tar.gz
dated 9/13/2003 9:05AM

I built by typing into a cygwin window:

./configure win32gdk
make

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?

Ed,

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.

Rene

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.

Ed

Ed,

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.

Rene

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.

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.