I just ran your example and got a core dump with Tcl Blend 1.2.5
and JDK-1.2.1_03 on a Solaris 5.6 box. This is a mighty strange
one. Why would the parent process lose the signal handler in a fork().

Mo Dejong
Red Hat Inc.

On Mon, 20 Mar 2000, Jiang Wu wrote:

> Can someone verify that the following scenario will cause a core dump on
> Solaris 2.7?
> 
> Setup: Solaris 2.7, Tcl 8.2.3, TclBlend 1.2.6, JDK 1.2.2
> Steps: Start 'jtclsh' and type the following commands
> 
> package require java
> catch {set x [exec whoami]}
> java::load -classpath foo bar
> 
> ------------------------------------------------
> 
> In JDK 1.2.2, the JVM uses a signal handler to catch SIGSEGV.  "package
> require java" sets up this signal handler in the process.  However, after
> "exec whoami", the parent process loses the signal handler.  I put debug
> printf in the code "TclpCreateProcess(...)" in "tclUnixPipe.c" file.  It
> seems that after the "vfork()" call, only the child process is retaining the
> signal handler.  The parent process no longer has the signal handler.
> 
>   // signal handler OK
>   pid = vfork();
> 
>   // signal handler OK in child process
>   // signal handler reverted to SIG_DFL in the parent process
> 
> Losing the signal handler causes the process to core dump later on when
> accessing certain Java code.
> 
> -- Jiang Wu
>    [EMAIL PROTECTED]


----------------------------------------------------------------
The TclJava mailing list is sponsored by Scriptics Corporation.
To subscribe:    send mail to [EMAIL PROTECTED]  
                 with the word SUBSCRIBE as the subject.
To unsubscribe:  send mail to [EMAIL PROTECTED] 
                 with the word UNSUBSCRIBE as the subject.
To send to the list, send email to '[EMAIL PROTECTED]'. 
An archive is available at http://www.mail-archive.com/tcljava@scriptics.com

Reply via email to