|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1295 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 1295.
Report 1295 Actions
Problem Report Number 1295 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0577 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1998-07-13 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.0.2 Test Identification CAPIbase/lockf 44 Problem Summary TSD4U.00241 This test is not freeing the locked section in the same process that locked it Problem Text
There are multiple problems with this test, two of which have been
addressed by TSD4U.00225 and TSD4U.00222. On systems where this
test is able to continue despite the problems noted in these TSDs,
we see the additional problem noted in the test results above
whereby we get the failure:
ERROR: In LFS lock checking program: Locked section not freed
The test is in error. The test creates a lock with one process and
then forks and execs another process to do the unlocking, the exact
sequence referencing the source files being:
- flockf44.c forks and execs t44lrgoff.c.
- t44lrgoff.c opens a large off_t file, seeks past the 32-bit
boundary and writes a few bytes. It then lseeks backwards to
before the 32-bit boundary and sets a lock from there to the
end of the file.
- t44lrgoff.c then forks and execs t44smloff.c (small off_t)
passing the file descriptor of the open file. t44smloff.c
tries to remove the lock.
- t44smloff.c then forks and execs t44check.c to check if the
lock as been removed. t44check.c reports the lock has not
been removed.
A process cannot remove another process's locks. If this test is
corrected to exec in place and use the same process, it works.
As per the XSH5 description for the lockf() T_ULOCK request (page
473, last paragraph), a "F_ULOCK requests may release (wholly or in
part) one or more locked sections controlled by the process". The test
is trying to use F_ULOCK to unlock a section locked by a parent process.
Since the parent process created the lock, the parent controls that
section and the child cannot unlock the lock created by the parent.Test Output
TEST CASE: lockf
TEST PURPOSE #44
If the implementation allows creation of a file
description with an offset maximum less than the
largest size it supports for an off_t:
A call to int lockf(int fildes, int function, off_t
size) when function is F_UNLOCK, size is non-zero, the
offset of the last byte of the requested section is
the maximum value for an object of type off_t, and the
process has an existing lock in which size is 0 and
which includes the last byte of the requested section
shall be equivalent to a request to unlock from the
start of the requested sections with a size equal to 0.
PREP: Check for existence of programming environments
PREP: Obtain off_t size in XBS5_ILP32_OFF32 environment
PREP: Obtain off_t size in XBS5_ILP32_OFFBIG environment
PREP: Obtain off_t size in XBS5_ILP64_OFF64 environment
PREP: Obtain off_t size in XBS5_LPBIG_OFFBIG environment
PREP: Open communication pipe for child
PREP: Fork a child
PREP: Wait for child
INFO: Read child's test result
ERROR: In LFS lock checking program: Locked section not freed
PREP: Open communication pipe for child
PREP: Fork a child
PREP: Connect child's pipe to stdout
PREP: Execute a program compiled in XBS5_ILP32_OFFBIG (64-bit off_t) environme
nt that:
opens a regular file for writing,
locks a section that includes the byte at the offset
which is the maximum value that can be reprsented in
32-bit off_t object
exec a program compiled in XBS5_ILP64_OFF64 (32-bit off_t) environment,
passing
it the open file descriptor
TEST: lockf with F_UNLOCK unlocks the initial section
PREP: Wait for child
INFO: Read child's test result
ERROR: In LFS lock checking program: Locked section not freed
PREP: Open communication pipe for child
PREP: Fork a child
PREP: Connect child's pipe to stdout
PREP: Execute a program compiled in XBS5_ILP32_OFFBIG (64-bit off_t) environme
nt that:
locks a section that includes the byte at the offset
which is the maximum value that can be reprsented in
32-bit off_t object
exec a program compiled in XBS5_LPBIG_OFFBIG (32-bit off_t) environment,
passing
it the open file descriptor
TEST: lockf with F_UNLOCK unlocks the initial section
PREP: Wait for child
INFO: Read child's test result
ERROR: In LFS lock checking program: Locked section not freed
PREP: Connect child's pipe to stdout
PREP: Execute a program compiled in XBS5_ILP32_OFFBIG (64-bit off_t) environme
nt that:
opens a regular file for writing,
locks a section that includes the byte at the offset
which is the maximum value that can be reprsented in
32-bit off_t object
exec a program compiled in XBS5_ILP32_OFF32 (32-bit off_t) environment,
passing
it the open file descriptor
TEST: lockf with F_UNLOCK unlocks the initial section
44 FAILReview 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 versions 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 1295
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority