David, C runtime lib problems sound painfully interesting. For the time being, forking the Xalan processing code off to separate child and performing the offending fork from the main seems to work...not quite sure why or if that might cause more problems down the road. I'll post this to list. Thanks again. charles
-----Original Message----- From: David N Bertoni/Cambridge/IBM [mailto:[EMAIL PROTECTED] Sent: Friday, December 20, 2002 4:51 PM To: Charles Earl Subject: RE: XalanTransformer.transform call hangs after fork() Hi Charles, Can you make sure your posts go to the list? That way everyone can follow the discussion, and later find things in the archive. This is happening in the C runtime library, so I'm not sure what's going on. I've never built Xalan or Xerces using GCC on Solaris (earlier versions of GCC could not build Xalan on Solaris due to bugs in the compiler.) You might try searching the Sun web site for any issues with fork() and C++ programs. Also, I'd suggest you post the information to the Xerces-C list, in case someone else has encountered this problem. If you can reproduce it with simplified program you might also report it to the GCC maintainers. Sorry I can't be more help to you... Dave "Charles Earl" <[EMAIL PROTECTED] To: "'David N Bertoni/Cambridge/IBM'" <[EMAIL PROTECTED]> nke.com> cc: <[email protected]>, (bcc: David N Bertoni/Cambridge/IBM) Subject: RE: XalanTransformer.transform call hangs after fork() 12/20/2002 04:29 PM Dave, After some futzing with gdb, I'm able to pinpoint the following segfault: Program received signal SIGSEGV, Segmentation fault. 0xff0c1a50 in _smalloc () from /lib/libc.so.1 (gdb) bt #0 0xff0c1a50 in _smalloc () from /lib/libc.so.1 #1 0xff0c1a98 in malloc () from /lib/libc.so.1 #2 0xff2f4a4c in __builtin_new (sz=4) at ./cp/new1.cc:84 #3 0xfeef16dc in ?? () at ./cp/exception.cc:342 from /usr/local/xerces-c-src2_1_0/lib/libxerces-c.so.21 #4 0xfee15e9c in XMLScanner::commonInit () from /usr/local/xerces-c-src2_1_0/lib/libxerces-c.so.21 #5 0xfee13d70 in XMLScanner::XMLScanner () from /usr/local/xerces-c-src2_1_0/lib/libxerces-c.so.21 #6 0xfedcc058 in SAX2XMLReaderImpl::SAX2XMLReaderImpl () from /usr/local/xerces-c-src2_1_0/lib/libxerces-c.so.21 #7 0xfe58ad6c in XalanSourceTreeParserLiaison::createReader () from /usr/local/xml-xalan/c/lib/libxalan-c1_4_0.so #8 0xfe58a680 in XalanSourceTreeParserLiaison::parseXMLStream () from /usr/local/xml-xalan/c/lib/libxalan-c1_4_0.so #9 0xfe689b54 in XalanDefaultParsedSource::XalanDefaultParsedSource () from /usr/local/xml-xalan/c/lib/libxalan-c1_4_0.so #10 0xfe68c52c in XalanTransformer::parseSource () from /usr/local/xml-xalan/c/lib/libxalan-c1_4_0.so #11 0xfe68af6c in XalanTransformer::transform () from /usr/local/xml-xalan/c/lib/libxalan-c1_4_0.so #12 0x55390 in SSGUIListener::do_cmd_create_schedule (this=0xffbef1e8, filename={static npos = 4294967295, static nilRep = {len = 0, res = 0, ref = 120, selfish = false}, ---Type <return> to continue, or q <return> to quit--- dat = 0x1e6228 "/home/earl/config/tmpfile.xml"}, cmd={ static npos = 4294967295, static nilRep = {len = 0, res = 0, ref = 120, selfish = false}, dat = 0x1f9cc0 "<?xml version=\"1.0\"?>\n<GS_CommandCreateSchedule><REQUES T_ID>0</REQUEST_ID><USER_ID>charles</USER_ID><HORIZON_START>2003-355/00: 00:00</H ORIZON_START><HORIZON_DURATION>1d</HORIZON_DURATION><HORIZON_END>"...}) at SSGUIListener.cpp:659 Again, this does not occur when the preceding fork() is removed. charles -----Original Message----- From: David N Bertoni/Cambridge/IBM [mailto:[EMAIL PROTECTED] Sent: Thursday, December 19, 2002 5:59 PM To: [email protected] Subject: Re: XalanTransformer.transform call hangs after fork() That's very bizarre. I don't remember anyone reporting anything like that before, although I don't know how often the combination of Xalan/Xerces and fork() are. What platform are you on? Can you attach the debugger to the process that's hung to see what's going on? Dave "Charles Earl" <[EMAIL PROTECTED] To: <[email protected]> nke.com> cc: (bcc: David N Bertoni/Cambridge/IBM) Subject: XalanTransformer.transform call hangs after fork() 12/19/2002 05:54 PM Hi, I'm noticing that in my program, calls to XalanTransformer.transform hang after I 'fork()' a process. The operations inside the fork make no use of Xalan. I initialize Xalan: XMLPlatformUtils::Initialize(); XalanTransformer::initialize(); Inside of main(). After a subsequent client connection to main, the fork() call is made to spawn an auxilary data analysis program (again, no use of Xalan inside of the forked process). The parent subsequently calls XalanTransformer.transform and then hangs at the point the call is made. I note that if I comment out the fork() (or make calls to XalanTransformer prior to fork) then transform method behaves as expected. Suggestions? Charles C. Earl,Ph.D. AI Software Engineer (650) 655-7676 fax: (650) 655-7243 Stottler Henke Associates, Inc. 1660 South Amphlett Blvd., Suite 350 San Mateo, CA 94402
