[Fwd: Re: [Evolution-hackers] Question about defunc processes produced by libsoup on Solaris]
- From: Sean Gao <sean gao sun com>
- To: evolution-hackers lists ximian com
- Subject: [Fwd: Re: [Evolution-hackers] Question about defunc processes produced by libsoup on Solaris]
- Date: Mon, 31 Mar 2003 16:55:07 +0800
--- Begin Message ---
- From: Harry Lu <harry lu sun com>
- To: Sean Gao <sean gao sun com>
- Cc: evolution-hackers lists ximian com
- Subject: Re: [Evolution-hackers] Question about defunc processes produced by libsoup on Solaris
- Date: Mon, 31 Mar 2003 16:47:52 +0800
Hi! Soup developers,
Here is a patch seemed can fix this bug. Please review it.
BTW, Sean means soup-0.7.11, not libsoup HEAD. The patch is also for
soup-0.7.11 which is used by evolution 1.2.3. But this problem might
also exists for libsoup HEAD. I don't have a environment to test it now.
Thanks!
Harry
Sean Gao wrote:
Hi Hackers,
We met a problem when using libsoup.
In the funciton soup-ssl.c : soup_get_ssl_iochannel_real, it uses
fork() and exec() to create a child
progress to complete the secure connection establishment by execute
soup_ssl_proxy. This works well
on Linux, however, on Solaris we find that it will produce a lot of
defunct processes there before the
parent process ends. And we have noticed that there is a waitpid
() call if G_IO_HUP|G_IO_ERR|G_IO_NVAL matches.
However, if there is no such error signal returns, why the parent do
not call waitpid () to waiting the child
process? AFAIK, it would make child pocesses become zombie if the
parent neither end before the child
nor wait for it.
Any idea?
Thanks,
-Sean
_______________________________________________
evolution-hackers maillist - evolution-hackers lists ximian com
http://lists.ximian.com/mailman/listinfo/evolution-hackers
Index: src/libsoup/soup-ssl.c
===================================================================
RCS file: /cvs/gnome/soup/src/libsoup/soup-ssl.c,v
retrieving revision 1.16.2.1.2.2
diff -u -r1.16.2.1.2.2 soup-ssl.c
--- src/libsoup/soup-ssl.c 16 Oct 2002 19:44:37 -0000 1.16.2.1.2.2
+++ src/libsoup/soup-ssl.c 31 Mar 2003 08:00:16 -0000
@@ -58,7 +58,16 @@
static gboolean
soup_ssl_hup_waitpid (GIOChannel *source, GIOCondition condition, gpointer ppid)
{
+ pid_t pidDead;
+ int status;
+
waitpid (GPOINTER_TO_INT (ppid), NULL, 0);
+
+ /* Remove all defunct processes that parent owns */
+ do {
+ pidDead = waitpid(-1, &status, WNOHANG);
+ }
+ while ((pidDead != -1) && (pidDead != 0));
return FALSE;
}
--- End Message ---
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]