[jira] [Commented] (STDCXX-1072) [Oracle Solaris/SPARCV8] stricter mutex alignment requirements
[ https://issues.apache.org/jira/browse/STDCXX-1072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13473163#comment-13473163 ] Liviu Nicoara commented on STDCXX-1072: --- The attached patch.2.diff uses the aligned buffer class for a cleaner and slightly more verbose fix. [Oracle Solaris/SPARCV8] stricter mutex alignment requirements -- Key: STDCXX-1072 URL: https://issues.apache.org/jira/browse/STDCXX-1072 Project: C++ Standard Library Issue Type: Bug Components: Thread Safety Affects Versions: 4.2.1, 4.2.x, 4.3.x, 5.0.0 Environment: Oracle Solaris on SPARC V8 (or V9 emulation?) hardware. Reporter: Liviu Nicoara Assignee: Liviu Nicoara Labels: SPARC, Solaris, V8, alignment, mutex Fix For: 4.2.x, 4.3.x, 5.0.0 Attachments: patch.2.diff, patch.diff Original Estimate: 4h Remaining Estimate: 4h The issue has been reported in STDCXX-1040, then STDCXX-1066. The originator was apparently an improvement (as a response to CR 6296770: http://tinyurl.com/8ohjsgl) shipped with KU 137111-01 (http://tinyurl.com/ceet6ec) which requires stricter alignment than the machine word for userland mutexes. Quoting here the Fujitsu patch notes (in case it goes away): {quote} {noformat} 2) When an application using the mutex lock or rw lock in the way shown below is executed. (*1, *2) ... *2) ... example of programming that causes the ... problem. In the case where the problem occurs int *ip; mutex_t *mp; ip = (int *) malloc(sizeof (int) + sizeof (mutex_t)); mp = (mutex_t *) (ip + 1); /* The address is used with a modification */ In the case where the problem does not occur -1 mutex_t mp; /* Obtained statically */ In the case where the problem does not occur -2 mutex_t *mp; mp = (mutex_t *) malloc(sizeof (mutex_t)); /* The address is used without any modifications */ {noformat} {quote} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (STDCXX-1072) [Oracle Solaris/SPARCV8] stricter mutex alignment requirements
[ https://issues.apache.org/jira/browse/STDCXX-1072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13465554#comment-13465554 ] Liviu Nicoara commented on STDCXX-1072: --- The kernel patch changed the alignment of the userland mutex objects from a machine word to a double-word boundary. No changes are required of the users who use such objects in their programs unless users create mutex objects in buffers which may not be aligned on a proper boundary. E.g., the following are safe: {noformat} mutex_t lock; struct S { char misalign; mutex_t lock; }; {noformat} whereas the following is not: {noformat} union { void* align; char buf [sizeof mutex_t]; } u; new (u) mutex_t; {noformat} because the alignment requirements for void pointer are less strict than for mutex_t. A few places in the library use the latter for all sorts of static objects (mostly local statics). [Oracle Solaris/SPARCV8] stricter mutex alignment requirements -- Key: STDCXX-1072 URL: https://issues.apache.org/jira/browse/STDCXX-1072 Project: C++ Standard Library Issue Type: Bug Components: Thread Safety Affects Versions: 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1 Environment: Oracle Solaris on SPARC V8 (or V9 emulation?) hardware. Reporter: Liviu Nicoara Labels: SPARC, Solaris, V8, alignment, mutex Fix For: 4.2.x, 4.3.x, 5.0.0 Original Estimate: 4h Remaining Estimate: 4h The issue has been reported in STDCXX-1066. The originator was apparently an improvement (as a response to CR 6296770: http://tinyurl.com/8ohjsgl) shipped with KU 137111-01 (http://tinyurl.com/ceet6ec) which requires stricter alignment than the machine word for userland mutexes. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira