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













Reply via email to