Minutes of the 9th May 2013 Teleconference Austin-608 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 10 May 2013 Attendees Don Cragun, PASC OR Andrew Josey, The Open Group Eric Blake, Red Hat Jim Pugsley, Oracle Geoff Clare, The Open Group Nick Stoughton, USENIX, ISO/IEC OR Joerg Schilling, Fraunhofer Society Richard Hansen, BBN Apologies Mark Brown, IBM, TOG OR * General News The interpretations due for finalizing last week have been processed by Andrew and notifications sent to the main reflector. Nick had completed his action on Bug 684 ( Nick took an action to submit a separate Mantis bug with [f]pathconf() changes for Issue 8.) * Outstanding actions +Bug 0000561: NUL-termination of sun_path in Unix sockets OPEN http://austingroupbugs.net/view.php?id=561 Eric has an action to update the proposal. +Bug 0000573: Please add '+' to the portable filename character set OPEN http://austingroupbugs.net/view.php?id=573 Joerg has an action to prepare a proposed change. +Bug 0000592: consistent use of struct timespec OPEN http://austingroupbugs.net/view.php?id=592 This item needs further investigation of existing implementations. Mark reported that AIX does not have a problem with this. Jim notes he is still looking at this. +Bug 0000598: OH shading and new interfaces OPEN http://austingroupbugs.net/view.php?id=598 Eric has an action to propose a new solution with self-contained headers. +Bug 0000517: EBNF support OPEN http://austingroupbugs.net/view.php?id=517 Action on Joerg to look at this. +Bug 0000633: SIGEV_THREAD delivery renders many signal interfaces unsafe OPEN http://austingroupbugs.net/view.php?id=633 This item was again left open pending further feedback. +Bug 0000657: Conditions under which fmemopen() write a NUL to the buffer are insufficiently specified OPEN http://austingroupbugs.net/view.php?id=657 Eric has an action to propose wording to clarify the behavior for fmemopen(), and also to contact the glibc developers to get their feedback. +Bug 0000658: Undefined/unspecified behavior clauses in description of open have race conditions OPEN http://austingroupbugs.net/view.php?id=658 It was noted that there is some overlap with changes in TC1. Eric took an action to update the proposal to resolve the overlaps appropriately. Bug 0000615: pthread_setcancelstate should be async-signal-safe OPEN http://austingroupbugs.net/view.php?id=615 Mark and Jim to report back on whether pthread_cancelstate() is async-signal-safe on AIX and Solaris. Andrew to ask Apple and HP whether pthread_cancelstate() is async-signal-safe on OS X and HP-UX. Bug 622 left open pending resolution of 615. http://austingroupbugs.net/view.php?id=622 * Current Business +Bug 0000656: Clearly allow or forbid thread-local storage for "static" buffers Accepted as Marked http://austingroupbugs.net/view.php?id=656 Don had completed his action building on the previous changes for bug 75. Geoff had provided feedback on the reflector and Don had incorporated the changes into bugnote 1595. This item is tagged for TC2-2008, also C11 An interpretation is required. Interpretation response: The standard does not speak to this issue, and as such no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor. Rationale: None. Notes to the Editor (not part of this interpretation): Make the changes proposed in Note: 0001595. Make the following additions to the standard: basename(): Change: "The basename() function may modify the string pointed to by path, and may return a pointer to internal storage. The returned pointer might be invalidated or the storage might be overwritten by a subsequent call to basename()." on P619, L21156-21158 to: "The basename() function may modify the string pointed to by path, and may return a pointer to internal storage. The returned pointer might be invalidated or the storage might be overwritten by a subsequent call to basename(). The returned pointer might also be invalidated if the calling thread is terminated." ctermid(): Change: "If s is a null pointer, the string shall be generated in an area that may be static, the address of which shall be returned. The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ctermid()." on P718, L24231-24234 to: "If s is a null pointer, the string shall be generated in an area that may be static, the address of which shall be returned. The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ctermid(). The returned pointer might also be invalidated if the calling thread is terminated." dirname(): Change: "The dirname() function may modify the string pointed to by path, and may return a pointer to internal storage. The returned pointer might be invalidated or the storage might be overwritten by a subsequent call to dirname()." on P730, L24601-24603 to: "The dirname() function may modify the string pointed to by path, and may return a pointer to internal storage. The returned pointer might be invalidated or the storage might be overwritten by a subsequent call to dirname(). The returned pointer might also be invalidated if the calling thread is terminated." dlerror(): Change: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to dlerror() in the same thread (if dlerror() is thread-safe) or in any thread (if dlerror() is not thread-safe)." on P735, L24774-24776 to: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to dlerror() in the same thread (if dlerror() is thread-safe) or in any thread (if dlerror() is not thread-safe). The returned pointer might also be invalidated if the calling thread is terminated." getgrent() on endgrent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrgid(), getgrnam(), or getgrent()." on P752 L25329-25332 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrgid(), getgrnam(), or getgrent(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." gethostent() on endhostent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to gethostent()." on P754, L25393-25396 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to gethostent(). The returned pointer, and pointers with the structure, might also be invalidated if the calling thread is terminated." getnet*() on endnetent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getnetbyaddr(), getnetbyname(), or getnetent()." on P756, L25452-25455 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getnetbyaddr(), getnetbyname(), or getnetent(). The returned pointer, and pointers with the structure, might also be invalidated if the calling thread is terminated." getproto*() on endprotoent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getprotobyname(), getprotobynumber(), or getprotoent()." on P758, L25512-25515 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getprotobyname(), getprotobynumber(), or getprotoent(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." getpwent() on endpwent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwuid(), getpwnam(), or getpwent()." on P760, L25558-25561 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwuid(), getpwnam(), or getpwent(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." getserv*() on endservent() page: Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getservbyname(), getservbyport(), or getservent()." on P763, L25652-25655 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getservbyname(), getservbyport(), or getservent(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." getenv(): Change: "[CX]The returned string pointer might be invalidated or[/CX] the string content might be overwritten by a subsequent call to getenv(), [CX]setenv(), unsetenv(),[/CX] [XSI]or putenv()[/XSI] but they shall not be affected by a call to any other function in this volume of POSIX.1-20xx." on P1017, L34414-34416 to: "[CX]The returned string pointer might be invalidated or[/CX] the string content might be overwritten by a subsequent call to getenv(), [CX]setenv(), unsetenv(),[/CX] [XSI]or putenv()[/XSI] but they shall not be affected by a call to any other function in this volume of POSIX.1-20xx. [CX]The returned string pointer might also be invalidated if the calling thread is terminated.[/CX]" getgrgid(): Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrent(), getgrgid(), or getgrnam()." on P1023, L34589-34592 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrent(), getgrgid(), or getgrnam(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." getgrnam(): Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrent(), getgrgid(), or getgrnam()." on P1027, L34720-34723 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getgrent(), getgrgid(), or getgrnam(). The returned pointer, and pointers with the structure, might also be invalidated if the calling thread is terminated." getlogin(): Change: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to getlogin()." on P1038, L35039-35043 to: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to getlogin(). The returned pointer and the string content might also be invalidated if the calling thread is terminated." getpwnam(): Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwent(), getpwnam(), or getpwuid()." on P1065, L35888-35891 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwent(), getpwnam(), or getpwuid(). The returned pointer, and pointers with the structure, might also be invalidated if the calling thread is terminated." getpwuid(): Change: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwent(), getpwnam(), or getpwuid()." on P1069, L36024-36027 to: "The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to getpwent(), getpwnam(), or getpwuid(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." localeconv(): Change: "The application shall not modify the structure to which the return value points, [CX]nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or[/CX] the structure [CX]or the storage areas[/CX] might be overwritten by a subsequent call to localeconv(). In addition, [CX]the returned pointer, and pointers within the structure, might be invalidated or[/CX] the structure [CX]or the storage areas[/CX] might be overwritten by subsequent calls to setlocale() with the categories LC_ALL, LC_MONETARY, or LC_NUMERIC, [CX]or by calls to uselocale() which change the categories LC_MONETARY or LC_NUMERIC[/CX]." on P1247, L41402-41409 to: "The application shall not modify the structure to which the return value points, [CX]nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or[/CX] the structure [CX]or the storage areas[/CX] might be overwritten by a subsequent call to localeconv(). In addition, [CX]the returned pointer, and pointers within the structure, might be invalidated or[/CX] the structure [CX]or the storage areas[/CX] might be overwritten by subsequent calls to setlocale() with the categories LC_ALL, LC_MONETARY, or LC_NUMERIC, [CX]or by calls to uselocale() which change the categories LC_MONETARY or LC_NUMERIC. The returned pointer, pointers with the structure, the structure, and the storage areas, might also be invalidated if the calling thread is terminated.[/CX]" nl_langinfo(): Change: "The application shall not modify the string returned. The pointer returned by nl_langinfo() might be invalidated or the string content might be overwritten by a subsequent call to nl_langinfo() in any thread or to nl_langinfo_l() in the same thread or the initial thread, by subsequent calls to setlocale() with a category corresponding to the category of item (see ) or the category LC_ALL, or by subsequent calls to uselocale() which change the category corresponding to the category of item. The pointer returned by nl_langinfo_l() might be invalidated or the string content might be overwritten by a subsequent call to nl_langinfo_l() in the same thread or to nl_langinfo() in any thread, or by subsequent calls to freelocale() or newlocale() which free or modify the locale object that was passed to nl_langinfo_l(). on P1387, L45872-45880 to: "The application shall not modify the string returned. The pointer returned by nl_langinfo() might be invalidated or the string content might be overwritten by a subsequent call to nl_langinfo() in any thread or to nl_langinfo_l() in the same thread or the initial thread, by subsequent calls to setlocale() with a category corresponding to the category of item (see ) or the category LC_ALL, or by subsequent calls to uselocale() which change the category corresponding to the category of item. The pointer returned by nl_langinfo_l() might be invalidated or the string content might be overwritten by a subsequent call to nl_langinfo_l() in the same thread or to nl_langinfo() in any thread, or by subsequent calls to freelocale() or newlocale() which free or modify the locale object that was passed to nl_langinfo_l(). The pointer returned and the string content might also be invalidated if the calling thread is terminated." ptsname(): Change: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ptsname()." on P1727, L55633-55634 to: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ptsname(). The returned pointer and the stri ng content might also be invalidated if the calling thread is terminated." readdir(): Change: "The application shall not modify the structure to which the return value of readdir() points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to readdir() on the same directory stream. They shall not be affected by a call to readdir() on a different directory stream." on P1759, L56601-56605 to: "The application shall not modify the structure to which the return value of readdir() points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated or the structure or the storage areas might be overwritten by a subsequent call to readdir() on the same directory stream. They shall not be affected by a call to readdir() on a different directory stream. The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated." strerror(): Change: "The application shall not modify the string returned. [CX]The returned string pointer might be invalidated or[/CX] the string content might be overwritten by a subsequent call to strerror(), [CX]or by a subsequent call to strerror_l() in the same thread[/CX]." on P2014, L64269-64271 to: "The application shall not modify the string returned. [CX]The returned string pointer might be invalidated or[/CX] the string content might be overwritten by a subsequent call to strerror(), [CX]or by a subsequent call to strerror_l() in the same thread. The returned pointer and the string content might also be invalidated if the calling thread is terminated.[/CX]" strsignal(): Change: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to strsignal() or setlocale()." on P2047, L65392-65393 to: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to strsignal() or setlocale(). The returned pointer might also be invalidated if the calling thread is terminated." ttyname(): Change: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ttyname()." on P2159, L68808-68810 to: "The application shall not modify the string returned. The returned pointer might be invalidated or the string content might be overwritten by a subsequent call to ttyname(). The returned pointer and the string content might also be invalidated if the calling thread is terminated." Bug 0000601: mbsnrtowcs clarification Accepted as Marked http://austingroupbugs.net/view.php?id=601 This was revisited as comments had been raised during its review for an interpretation. The previous proposed interpretation has been marked as an initial interpretation response and a new interpretation drafted. Interpretation response: The standard is unclear on this issue, and no conformance distinction can be made between alternative implementations based on this. This is being referred to the sponsor. Rationale: None. Notes to the Editor (not part of this interpretation): At page 1277 line 41986 change: except that the conversion of characters pointed to by src is limited to at most nmc bytes (the size of the input buffer). to (all within the CX shading): except that the conversion of characters indirectly pointed to by src is limited to at most nmc bytes (the size of the input buffer), and under conditions where mbsrtowcs() would assign the address just past the last character converted (if any) to the pointer object pointed to by src, mbsnrtowcs() shall instead assign the address just past the last byte processed (if any) to that pointer object. If the input buffer ends with an incomplete character, it is unspecified whether conversion stops at the end of the previous character (if any), or at the end of the input buffer. In the latter case, a subsequent call to mbsnrtowcs() with an input buffer that starts with the remainder of the incomplete character shall correctly complete the conversion of that character. At line 1278 line 42008 change FUTURE DIRECTIONS from: None. to: A future version may require that when the input buffer ends with an incomplete character, conversion stops at the end of the input buffer. This interpretation will go for a full 30 day review when the next batch are processed. Bug 0000672: Necessary step(s) to synchronize filename operations on disk OPEN http://austingroupbugs.net/view.php?id=672 Paul Eggert has completed his action to submit a proposal which Andrew had added to the bug as a bugnote. Geoff had commented on the reflector and took an Action to propose final wording. Bug 0000685: Clarify locale source of wide-character function argument Accepted as Marked http://austingroupbugs.net/view.php?id=685 This item is tagged for TC2-2008 For each of the twelve affected functions, replace: is a wide-character code corresponding to a valid character in the current locale with: is a wide-character code corresponding to a valid character in the locale used by the function Bug 0000687: Not all filesystems support posix_fallocate OPEN http://austingroupbugs.net/view.php?id=687 Geoff took an action to propose final wording based on bugnote 1566. Bug 0000688: realloc(NULL, 0) vs. malloc(0) Accepted http://austingroupbugs.net/view.php?id=688 This item is tagged for TC2-2008 Bug 0000690: clarify behavior when calling waitpid with SA_NOCLDWAIT OPEN http://austingroupbugs.net/view.php?id=690 Richard took an action to propose changes. Next Steps ---------- The next call is on May 16 2013 (a Thursday) Calls are anchored on US time. This call will be for the regular 90 minutes. http://austingroupbugs.net See the calendar for the list of dialup numbers. An IRC channel will be available for the meeting irc://irc.freenode.net/austingroupbugs