|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1458 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 1458.
Report 1458 Actions
Problem Report Number 1458 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0740 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1995-11-17 08:00 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/setrlimit 19 24 Problem Summary TSD4U.00074 This test may fail on implementations that require that sigsetjmp() be called with a non-zero savemask in order for alternate stacks to be used properly when siglongjmp() is called. Problem Text
This test may fail on implementations that require that sigsetjmp() be
called with a non-zero savemask in order for alternate stacks to be used
properly when siglongjmp() is called.
The sigsetjmp calls need to be defined with the value argument as a
non-zero value. This is as per the siglongjmp requirement.
The siglongjmp() function will restore the saved
signal mask if and only if the env argument was
initialised by a call to sigsetjmp() with a non-zero
savemask argument.
This is due to the fact that without the saved signal mask being
restored there isn't sufficient information to understand about the
alternate signal stack.
As far as POSIX is concerned (the source of the sigsetjmp()
definition), there is no such thing as an alternate signal stack, so
it doesn't specify that that information may be necessary to jump
successfully from a signal handler. Well, the fact is that that extra
data is required for sigaltstack(), so there's more to this than
simply than saving restoring the signal mask.
Anyway, I believe the test is incorrect in its invocation of the
sigsetjmp(). The presence of sigaltstack() in the extended standard
implies the savemask arg has to refer to a general 'signal state'
required to restore the environment correctly when siglongjmp() is
called from a signal handler.Test Output
10|1 /tset/CAPIbase/fsetrlimit/fsetrlimit19 20:22:46|TC Start, scenario ref 3-1, ICs {19}
15|1 1.10 1|TCM Start
400|1 19 1 20:22:47|IC Start
200|1 1 20:22:47|TP Start
520|1 1 26476 1 1|SPEC1170TESTSUITE CASE 19
520|1 1 26476 1 2|If the implementation does not inhibit enforcement of
520|1 1 26476 1 3|limits for the resource RLIMIT_STACK:
520|1 1 26476 1 4|When the size of the stack for the calling process
520|1 1 26476 1 5|would exceed the limit set by a call to int
520|1 1 26476 1 6|setrlimit(int resource, const struct rlimit *rlp) for
520|1 1 26476 1 7|resource RLIMIT_STACK the implementation shall not
520|1 1 26476 1 8|automatically grow the stack.
520|1 1 26552 1 1|PREP: Save the current stack limits
520|1 1 26552 1 2|TEST: Set limits with setrlimit
520|1 1 26552 1 3|PREP: Get set to catch SIGSEGV on an alternate stack
520|1 1 26552 1 4|PREP: Call sigsetjmp() to save the environment
520|1 1 26552 1 5|PREP: Make the stack grow such that a SIGSEGV is
520|1 1 26552 1 6| generated. Awaiting return from siglongjmp()
520|1 1 26552 1 7|PREP: Set to catch SIGSEGV again
520|1 1 26552 1 8|PREP: Call sigsetjmp() to save the environment
520|1 1 26552 1 9|PREP: Make the stack grow such that another SIGSEGV is
520|1 1 26552 1 10| generated. Awaiting return from siglongjmp()
520|1 1 26509 2 1|ERROR: process exited with signal 11
220|1 1 2 20:22:48|UNRESOLVED
410|1 19 1 20:22:48|IC End
80|1 0 20:22:48|TC End
10|1 /tset/CAPIbase/fsetrlimit/fsetrlimit24 20:05:42|TC Start, scenario ref 3-1, ICs {24}
15|1 1.10 1|TCM Start
400|1 24 1 20:05:42|IC Start
200|1 1 20:05:42|TP Start
520|1 1 26510 1 1|SPEC1170TESTSUITE CASE 24
520|1 1 26510 1 2|If the implementation does not inhibit enforcement of
520|1 1 26510 1 3|limits for the resource RLIMIT_AS:
520|1 1 26510 1 4|When the size of the stack for the calling process
520|1 1 26510 1 5|would cause the total available memory for the calling
520|1 1 26510 1 6|process to exceed the limit on the size set by a call
520|1 1 26510 1 7|to int setrlimit(int resource, const struct rlimit
520|1 1 26510 1 8|*rlp) for resource RLIMIT_AS the implementation shall
520|1 1 26510 1 9|not automatically grow the stack.
520|1 1 26491 1 1|PREP: Obtain the current limits
520|1 1 26491 1 2|TEST: Set limits with setrlimit
520|1 1 26491 1 3|PREP: Get set to catch SIGSEGV on an alternate stack
520|1 1 26491 1 4|PREP: Grow stack until SIGSEGV is generated
520|1 1 26491 1 5|PREP: Set to catch SIGSEGV again
520|1 1 26491 1 6|PREP: Grow stack again until SIGSEGV is generated
520|1 1 26493 2 1|ERROR: process exited with signal 11
220|1 1 2 20:05:44|UNRESOLVED
410|1 24 1 20:05:44|IC End
80|1 0 20:05:44|TC End
Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We agree this is a test suite deficiency in the test
suite version(s) listed.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency.
Problem Reporting System Options:
- View Report 1458
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority