Hi Jeremy, Jeremy Friesner wrote: >> Line 8 in the PulseNode.cpp file is the constructor, and the only thing >> that happens there is the member initializations. >> > > Indeed ... I can't imagine how a crash could occur in that area, unless the > "this" pointer is invalid. (Does this=0xf840c sound valid to you? It seems > suspiciously small to me...). Given that, I can think of a few things to try: > This does seem suspicious. > 1) Put fprintf's at line 30 of StorageReflectSession.cpp and in the > PulseNode() constructor, just to make sure the stack crawl is accurate -- if > the crash is indeed happening where it says it is, you should see one printed > but not the other. (since the stack crawl is a bit muddled, it's good to > double check) > I will try this. > 2) Add -DMUSCLE_AVOID_NEWNOTHROW to the Makefile to see if the bug is related > to new (nothrow)... this flag will change it so the code always uses the > regular new operator instead. > I did this, and it doesn't make any difference > 3) Upgrade your compiler to a newer version (4.x?) and see if the crash goes > away then. > I'm afraid that isn't possible. However I recompiled MUSCLE as a 64bit binary (added -m64 to the CC options) and all my problems went away. Something in the 32bit optimizations make MUSCLE fail on 32bit SPARC Solaris. My other lead is to not specify -O at all, and start adding the -f options that the various -O switches actually aggregate and see which optimization is causing the problem. I'll report back on this later (I'm a bit swamped at the moment). > -Jeremy > > Regards, Lior