Report 1645 Actions
Problem Report Number |
1645 |
Submitter's Classification |
Specification problem |
State |
Resolved |
Resolution |
Permanent Interpretation (PIN) |
Problem Resolution ID |
PIN.X.0202 |
Raised |
2002-01-30 08:00 |
Updated |
2003-03-13 08:00 |
Published |
2002-03-01 08:00 |
Product Standard |
Internationalised System Calls and Libraries Extended V2 (UNIX 98) |
Certification Program |
The Open Brand certification program |
Test Suite |
VSU version 5.1.2 |
Test Identification |
CAPI.os/ioprim/close 12 |
Specification |
System Interfaces and Headers Issue 5 |
Location in Spec |
See Problem Text |
Problem Summary |
PIN4U.00068 On last close of a master pty, SIGHUP may be sent to just the controlling process instead of the foreground process group |
Problem Text |
The assertion above tests the following part of close() from XSH5:
"If FILDES refers to the master side of a pseudo-terminal, and this is the last close, a SIGHUP signal is sent to the process group, if any, for which the slave side of the pseudo-terminal is the controlling terminal. It is unspecified whether closing the master side of the pseudo-terminal flushes all queued input and output."
This assertion is a recent change to the test suite in response to changes made to the spec as a result of corridgendum U053F, TSD4U.00295. The prior text in XSH4 omitted the "and this is the last close,". The current text takes care of the problem of sending SIGHUP on any close, instead of the just on the last close. But, this doesn't match historic PTY behavior in 4.3BSD or UNIX SVR4. (On those systems, the SIGHUP signal is sent to the controlling process associated with a PTY device; not directly to the entire process group.)
We believe that the behavior of pseudo-terminals and regular terminals should behave as much alike as possible in this case. The behavior for regular terminals specified in SUSv2, XBD5, section 9.1.10 Modem Disconnect is: "If a modem disconnect is detected by the terminal interface for a controlling terminal, and if CLOCAL is not set in the c_cflag field for the terminal, the SIGHUP signal is sent to the controlling process for which the terminal is the controlling terminal." This mirrors the requirements from POSIX.1-1996, subclause 7.1.1.10 (Modem Disconnect).
We believe that historic practice (and many current implementations) would be better described by changing part of the description from close() above to: "If FILDES refers to the master side of a pseudo-terminal, and this is the last close, a SIGHUP signal is sent to the controlling process, if any, for which the slave side of the pseudo-terminal is the controlling terminal. It is unspecified whether closing the master side of the pseudo-terminal flushes all queued input and output."
We request a waiver allowing either the behavior specified in XSH5 or that described above until a corrigendum corrects this problem.
|
Test Output |
************************************************************************ /tset/CAPI.os/ioprim/close/T.close 12 Failed
Test Description: Base Required Conformance A successful call to int close(int fildes) when fildes refers to the master side of a pseudo-terminal, and this is the last close, shall cause a SIGHUP signal to be sent to the process group, if any, for which the slave side of the pseudo-terminal is the controlling terminal.
Test Information: PREP: Open master side of pseudo terminal PREP: Create session PREP: Close master side (in session leader) PREP: Open slave side as controlling terminal PREP: Create child process in session PREP: Capture SIGHUP signals in child TEST: Await a SIGHUP in the child PREP: Capture SIGHUP signals in session leader TEST: Await a SIGHUP in session leader INFO: SIGHUP received in session leader PREP: Wait for child to terminate TEST: Close of master sends SIGHUP to slave side session ERROR: SIGHUP was sent to 1 processes in group, expected 2
************************************************************************
|
Review Information
Review Type |
TSMA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Recommendation |
No Resolution Given |
Review Response |
Since the intention of corrigenda item U013/25 was to correct a mismatch between the XSH4v2 specification and historic practice, but only part of the mismatch had been identified at the time, it seems likely that the Base Working Group will want to authorise an additional corrigenda item to correct the remaining part of the mismatch, that has now come to light through alignment of the test with the original corrigenda item.
Therefore this request should be forwarded to the working group for review.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
This request is being forwarded to the BWG for review.
|
Review Type |
Expert Group Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
No Resolution Given |
Review Conclusion |
The Base Working group agrees with the submitter that a permanent interpretation be granted and that either behavior be permitted for this issue of the specification.
|
Review Type |
SA Review |
Start Date |
null |
Completed |
null |
Status |
Complete |
Review Resolution |
Permanent Interpretation (PIN) |
Review Conclusion |
A Permanent Interpretation is granted.
|
Problem Reporting System Options:
|