[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

problem (bug?) with glibc' exec function



hi,

i got the following settings:

os: Linux blubb 2.6.15-1-686 #2 Mon Mar 6 15:27:08 UTC 2006 i686 GNU/
Linux
g++: gcc version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)
java: java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
glibc: 2.7

i got a java application from which i start os processes using c/c++
via JNI. every 'job' consists of a 'wrap script' and an 'application
script'. my c function forks the current process and replaces the
image
with the execl() function, in which the 'wrap script' is called as a
bash script. the 'wrap script' then calls the 'application script' and
does other stuff.

i did some masstests the last days. i started about 1000 'jobs' in a
loop.

execl() definition says, that the function replaces the current
process image with the delivered one. if the function succeeds it
doesnt return, if it fails it will return. however if i start lots of
jobs concurrently there are some 'jobs' which's process image isnt
replaced by the delivered bash script call to execl(), you can see it
by using the 'ps ax' command in the shell which shows several jvm
instances running, related to the number of failed-started 'jobs'. but
if the execl() function fails and the process image isnt replaced, the
execl() function neither returns a value. so i guess there is a bug.
any suggestions?

this applies to 0 to 20 'jobs' when starting about 1000 concurrently.
the number of course decreases when starting less 'jobs'. in another
test i started 700 'jobs' and there was not a single 'job' with that
problem. i did it 3 times in a row. no problem.


Reply to: