[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:19582] Bug#JP/1122: wmppxp makes zombie process
----Next_Part(Wed_Dec_15_23:42:48_1999_953)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
佐藤です。
From: Wataru SATO <wsato@xxxxxxxxxxxxxxx>
Subject: [debian-users:19535] Bug#JP/1122: wmppxp makes zombie process
Date: Sat, 11 Dec 1999 14:48:06 +0900
> Package: wmppxp
> Version: 0.51.0-1
> Severity: normal
>
> 次の手順で zombie プロセスが残ってしまいます。
> 1. wmppxp を起動
> 2. 上向きの三角ボタンを押してログを出力するウィンドウを表示
> 3. そのウィンドウを閉じる
>
> # fork した子プロセスを wait していないようです。
>
> -- System Information
> Debian Release: potato
> Kernel Version: Linux lnote 2.2.13 #1 Sun Oct 31 13:50:40 JST 1999 i586 unknown
>
> Versions of the packages wmppxp depends on:
> ii libc6 2.1.2-10 GNU C Library: Shared libraries and timezone
> ii libglib1.2 1.2.6-1 The GLib library of C routines
> ii libgtk1.2 1.2.6-1 The GIMP Toolkit set of widgets for X
> ii ppxp 0.99072807-2 Yet another PPP program.
> ii xlib6g 3.3.5-2 shared libraries required by X clients
> ii xpm4g 3.4k-5 the X PixMap library
ちょっとした patch を作ってみました。
# とりあえず動いているようです。
----Next_Part(Wed_Dec_15_23:42:48_1999_953)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="wmppxp.c.diff"
--- wmppxp.c.orig Tue Dec 14 12:14:41 1999
+++ wmppxp.c Tue Dec 14 12:14:53 1999
@@ -4,6 +4,8 @@
#include <unistd.h>
#include <time.h>
#include <signal.h>
+#include <sys/types.h>
+#include <wait.h>
/* X-Window function definition */
#include <X11/Xlib.h>
@@ -34,6 +36,9 @@
BOOL ConnectPPxP( int argc, char *argv[] );
BOOL DisconnectPPxP();
void CheckPPxPStat( struct xcio_s *xcio );
+static void WMPPxPSetSignalHandler();
+static void WMPPxPSignalHandler(int sig);
+
#ifdef _USE_GTK
void ParseArgument( int argc, char **argv );
@@ -49,6 +54,14 @@
{
if( *argv[i] == '-' )
{
+ int c = argv[i][1];
+ switch(c){
+ case 'b':
+ /* baud rate */
+ i ++;
+ baud_rate = atoi(argv[i]);
+ break;
+ }
}
else if( i != 0 )
{
@@ -67,6 +80,9 @@
/* Create X-Window */
CreateXWindow( argc, argv );
+ /* signal handerl */
+ WMPPxPSetSignalHandler();
+
/* wmppxp main command routine */
WMPPxPRoutine( argc, argv );
@@ -274,3 +290,21 @@
}
}
+static void WMPPxPSetSignalHandler(){
+ struct sigaction act;
+
+ act.sa_handler = WMPPxPSignalHandler;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ sigaction(SIGCHLD, &act, NULL);
+}
+
+static void WMPPxPSignalHandler(int sig){
+ pid_t pid;
+
+ switch (sig){
+ case SIGCHLD:
+ while(waitpid(0, NULL, WNOHANG) > 0);
+ break;
+ }
+}
----Next_Part(Wed_Dec_15_23:42:48_1999_953)----