| 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.
