HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1458 Details

Help 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:

     

    Back   


Contact the Certification Authority