| Bug #96327 | my_rcu_lock-t broken on i686 | ||
|---|---|---|---|
| Submitted: | 25 Jul 2019 10:16 | Modified: | 25 Jul 2019 20:49 |
| Reporter: | Dyre Tjeldvoll | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Locking | Severity: | S3 (Non-critical) |
| Version: | OS: | Any | |
| Assigned to: | CPU Architecture: | Any | |
[25 Jul 2019 20:49]
Paul DuBois
Posted by developer: Fixed in 8.0.18. Work was done for test suite. No changelog entry required.

Description: This unit test tried to spawn 1000 threads in a short amount of time. On i686 (32bit) this would result in the std::thread{} constructor throwing and exception, resulting from EAGAIN, resource temporarily unavailbale from the underlying OS call. The results were hard to interpret because join() was not called on the threads that already had been started, which in turn meant that std::terminate() was called from the destructor for those std::thread objects. How to repeat: Run my_rcu_lock-t on i686 Suggested fix: Reduce the number of threads created. Add a RAII based scope guard which joins with all joinable threads.