[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::axp-developer

Title:Alpha Developer Support
Notice:[email protected], 800-332-4786
Moderator:HYDRA::SYSTEM
Created:Mon Jun 06 1994
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:3722
Total number of notes:11359

3646.0. "Kandasoft" by HYDRA::BRYANT () Tue May 20 1997 18:27

    Company Name :  Kandasoft
    Contact Name :  Constantine Kojhukhin
    Phone        :  508/263-4428
    Fax          :  
    Email        :  [email protected]
    Date/Time in :  20-MAY-1997 17:24:26
    Entered by   :  Pat Bryant
    SPE center   :  MRO

    Category     :  UNIX
    OS Version   :  3.2
    System H/W   :  


    Brief Description of Problem:
    -----------------------------
He has a reproduced a problem where a child which was created via
pthread_create() is killed via kill(1).  The parent process goes
away when it shouldn't.  I have his reproducer which I will play
with.

T.RTitleUserPersonal
Name
DateLines
3646.1Input from CMA note 1547HYDRA::BRYANTWed May 21 1997 15:1529
Constantine,

I tried your reproducer on Digital UNIX 4.0 and found it doesn't kill the parent process.  I posted your
reproducer on Digital's threads conference thinking it may have been a bug in 3.2c.  However, based on the reply,
it looks more like an issue with POSIX compliance.  Version 3.2c of Digital UNIX is not POSIX compliant whereas
4.0 is.

It looks like you already have the workaround suggested here in your reproducer.

Here is the reply I received back:
----------------------------------------------------------------------------
You're misinterpreting what's happening. What you're doing (by calling
sigignore) is NOT setting the signal mask -- it's setting the signal ACTION
(to SIG_IGN).

In POSIX (and therefore in Digital UNIX 4.0), all threads share a common
process action for each signal. And therefore, all threads have SIGPIPE set
to SIG_IGN, and ignore the broken pipe. Prior to Digital UNIX 4.0, each
thread had its own private handler for the "synchronous" signal actions,
which happens to include SIGPIPE. Signal actions were not inherited. You can
work around that by having each thread call sigignore(), for example, before
doing any I/O.
---------------------------------------------------------------------------

Let us know if this helps.

Pat Bryant
Alpha Developer Support

3646.2Never heard back so I'm closing this oneHYDRA::BRYANTWed Jun 04 1997 16:070