Bug #105522 | Crash in pthread_cond_signal on bus error on Mac OS X ARM | ||
---|---|---|---|
Submitted: | 10 Nov 2021 19:04 | Modified: | 3 Dec 2021 0:59 |
Reporter: | Mikael Ronström | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Cluster: Cluster (NDB) storage engine | Severity: | S3 (Non-critical) |
Version: | 8.0.27 | OS: | MacOS |
Assigned to: | CPU Architecture: | ARM |
[10 Nov 2021 19:04]
Mikael Ronström
[10 Nov 2021 19:07]
Mikael Ronström
It could be related some memory issue. It works better when one runs with no parallelism. The machine has only 16 GB of memory. ./mtr --suite=ndb passes quite a few test cases properly.
[11 Nov 2021 7:24]
MySQL Verification Team
Hello Mikael, Thank you for the report and feedback. Sincerely, Umesh
[29 Nov 2021 16:24]
Mikael Ronström
By moving the NdbCondition_Signal call in AsyncIoThread.cpp such that it happens before NdbMutex_Unlock I haven't been able to reproduce the issue. I have no idea why this solves the problem, presumably the mutex somehow ensures that we don't use uninitialised memory somehow is my guess since this code only executes when starting a file system thread.
[3 Dec 2021 0:59]
Jon Stephens
Documented fix as follows in the NDB 8.0.29 changelog: An unplanned data node shutdown occurred following a bus error on Mac OS X for ARM. We fix this by moving the call to NdbCondition_Signal() (in AsyncIoThread.cpp) such that it executes prior to NdbMutex_Unlock()—that is, into the mutex, so that the condition being signalled is not lost during execution. Closed.