Defect report from : G. K. Rajani , Hewlett Packard
(Please direct followup comments direct to yyyyyyyyyyyyyy@xxxxxxxxxxxxx)
@ page 90 line 2089 section 2.9.1 objection {HPOSLGKR200601}
Problem:
Edition of Specification (Year): 2004
Defect code : 1. Error
The system() function is defined to be a thread-safe function. The
specification requires it to use features which have an affect at the
process scope, which renders it non-thread-safe.
As per the system () interface definition, (XSH P1540 ,L46753-46754 "The
system() function shall ignore the SIGINT and SIGQUIT signals, and shall block
the SIGCHLD signal"), the implementation needs to ignore the SIGINT and SIGQUIT
signals during the execution of system().
To achieve this the implementation needs to literally or effectively execute
the sigaction() function which has process wide scope (XSH P1402, L42498,42499,
the sigaction() function allows the calling process to examine and/or specify
the action to be associated with a specific signal).
Since sigaction() can also be called in another thread to set a
different signal action for SIGINT and SIGQUIT. This makes system()
non-threadsafe.
Action:
In System Interfaces, section 2.9.1, line 2089, add "system()" to the
list of functions that need not be thread-safe.
In System Interfaces, Chapter 3, after line 46908, add "This function
need not be reentrant. A function that is not required to be reentrant is not
required to be thread-safe."
|