pthreads & fork & execve

Dennis Noordsij (dennis.noordsij@wiral.com)
Fri, 30 Mar 2001 16:22:57 +0300


Hi,

I have question regarding use of pthreads, forks and execve's which appears
to not work very well :-) First let me explain the reasoning though

We have an app that launches a few other apps and keeps track of their
status, resource consumption etc. If one of the apps crashes, it is restarted
according to certain parameters.

The app uses pthreads, and it's method of (re)starting an application is
forking and calling execve.

It works fine for all-but-one other app, which core dumps when started this
way (from the commandline it works fine) and the core only traces back to
int main(int argc, char **argv). It uses both pthreads and -ldl for plugin
handling.

We have tried changing the linking order (i.e. -ldl -lpthread, -lpthread,
-ldl, etc), and even execv'ing a shell script that starts a shell script that
starts the app - result is the same, instant core without even running.

I can see who forks together with threads and execve's are a messy
combination, and a better solution altogether to our approach is appreciated
just as much as a way to make the current solution work :-)

We have tested both kernels 2.4.2 and 2.2.18.

We have tried on different systems, different hardware and slightly different
distributions (debian potato, unstable, etc).

To sum up: using a pthreaded app to launch another pthreaded app by means of
forking and exec(ve)'ng makes the second app core immediately, (at entering
main). What to do?

Kind regards, and thanks for any help
Dennis Noordsij
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/