Hi Jiri, I've seen the same on my linux machine (run stress two times and the second will be scrambled. It is related to the OpenPipe() call. If you could debug and fix this for me I would be very happy. Cheers, Fons. masik@fzu.cz wrote: > > Hi, > > has anybody seen a problem reading output of external commands by > fgets after popen (gSystem->OpenPipe) call? It can be noticed as a > garbage/empty line at the end of test/stress output where system info > is being obtained. I've seen this on Debian/PPC and some Debian/x86 > (but not all machines fail). As for non-linux boxes I had a chance to > test only dxplus(OSF1) at CERN for which it is less frequent but it > happens too. Root version is 3.01/06, libc-2.2.3-6, Linux version > 2.4.6-pre8, gcc-3.0. > > Please see the following example > > -------------------------------------------------------------------------------- > Name: poproot2.cxx > poproot2.cxx Type: text/x-c++src > Description: poproot2.cxx > > -------------------------------------------------------------------------------- > > [dxplus02] /afs/cern.ch/user/j/jmasik/public > g++ -I$ROOTSYS/include > poproot2.cxx `root-config --libs` > [dxplus02] /afs/cern.ch/user/j/jmasik/public > ./a.out > fgets returned NULL > [dxplus02] /afs/cern.ch/user/j/jmasik/public > ./a.out > * OSF1 dxplus02 V4.0 1229 alpha > > Any information on popen and fgets I have doesn't mention the need to > test anything beyond returned pointers. Bad runs have this line in > their tracelogs. > read(4, 0x30018000, 4096) = ? ERESTARTSYS (To be restarted) > > Do you have an idea what's wrong? Everything works if I comment out > TSystem.h and remove `root-config --libs` from the compile command on > Debian/PPC, on OSF removing TSystem.h is enough. > > Jiri > > I don't know how to strace on OSF, on Linux it looks like > .... > open("/data/masik/root-v3.02.gcc3/include/RQ_OBJECT.h", O_RDONLY) = 3 > brk(0x103ae000) = 0x103ae000 > fstat64(0x3, 0x7fffe938) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x30017000 > read(3, "// @(#)root/base:$Name: $:$Id: "..., 4096) = 4096 > _llseek(0x3, 0, 0, 0x7fffe8f8, 0) = 0 > read(3, "// @(#)root/base:$Name: $:$Id: "..., 4096) = 4096 > read(3, "ar *method) \\\n { Emit(\"Chan"..., 4096) = 152 > read(3, "", 4096) = 0 > pipe([4, 5]) = 0 > fork() = 4880 > close(5) = 0 > fstat64(0x4, 0x7ffff0c8) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x30018000 > read(4, 0x30018000, 4096) = ? ERESTARTSYS (To be > restarted) > --- SIGCHLD (Child exited) --- > fstat64(0x1, 0x7fffe9e8) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x30019000 > ioctl(1, 0x402c7413, 0x7fffe848) = 0 > write(1, "fgets returned NULL\n", 20) = 20 -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7677910
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:52 MET