|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1179 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 1179.
Report 1179 Actions
Problem Report Number 1179 Submitter's Classification Specification problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0381 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published null Product Standard Internationalised System Calls and Libraries Extended (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.0 Test Identification base/sigaction 25 Problem Summary PG4U.00086 This IR claims that only the lower 8-bits of the exit value are valid in the si_status field returned. Problem Text
We are returning only the low order 8 bits 0xEF = decimal 239
and the test case is expecting 0xBEEF = decimal 48879
In the POSIX .1 Standard and in the XPG4 standard the only documented
usage of the status argument that is passed on the exit() function
indicates that the low order 8 bits are the only relevant part of the
status argument. Additionally, since the WIF macros require the status
returned on the wait functions to contain an indication of whether the
child terminated or stopped due to a signal or via a call to one of the
exit functions, the status word can not be architected to pass thru
an entire integer for the status. For these reasons, it seems
inconsistent for the XPG4.2 test suite to require an entire integer to
be available from a call to exit() via the si_status member of the
siginfo_t structure rather than the one byte that is required by the
wait functions.Test Output
IC Start
TP Start
SPEC1170TESTSUITE CASE 25
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) with
SA_SIGINFO set in the sa_flags member of the sigaction
structure pointed to by act and sig equal to SIGCHLD,
on entry to the signal catching function specified by
the sa_handler member when the child exited the
si_code member of the structure pointed to by the
siginfo argument shall contain CLD_EXITED, the si_pid
member shall contain the child process ID, the
si_status member shall contain the child's exit value
and the si_uid member shall contain the real
user ID of the process that sent the signal.
PREP: Set up action for SIGCHLD
PREP: fork() a child that exits normally
TEST: signal = SIGCHLD
TEST: si_code = CLD_EXITED
TEST: si_status = exit value
ERROR: si_status incorrect. Expected 48879,Received 239
FAIL
IC End
TC EndReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We recommend this request be refused.
We believe the test is correct.
The exit() description specifies that only lower eight bits of the
value passed to exit are made available, but it only applies when
various wait*() functions are being executed:
If the parent process of the calling process is executing a
wait(), wait3(), waitid() or waitpid(), and has neither set
its SA_NOCLDWAIT flag nor set SIGCHLD to SIG_IGN, it is
notified of the calling process' termination and the low-order
eight bits (that is, bits 0377) of status are made available
to it. If the parent is not waiting, the child's status will
be made available to it when the parent subsequently executes
wait(), wait3(), waitid() or waitpid().
Outside of these conditions, the <signal.h> description states that
the si_status field should contain the exit value or signal without
alteration.
In addition, the following signal-specific
information will be available:
Signal Member Value
[...]
SIGCHLD pid_t si_pid child process ID
int si_status exit value or signal
uid_t si_uid real user ID of the process that sent
the signal
The use of the WIF* macros do not apply to these discussions, since
the exit value and signal information are not contained within a
single integer value. The use of WIF macros only applies to wait(),
wait3(), and waitpid().
The siginfo_t structure used by sigaction() divides this information
into separate elements, so size limitations of the si_status field are
not at issue.
PG4U.00067 also addresses these issues from a slightly different
perspective.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Rejected (REJ) Review Conclusion
This request is refused.
Problem Reporting System Options:
- View Report 1179
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority