[MDEV-13452] Assertion `!recv_no_log_write' failed in lsn_t log_reserve_and_open Created: 2017-08-04 Updated: 2017-08-23 Resolved: 2017-08-07 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.2 |
| Fix Version/s: | 10.2.9 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Attachments: |
|
||||||||||||||||
| Issue Links: |
|
||||||||||||||||
| Description |
|
Test case is attached. |
| Comments |
| Comment by Marko Mäkelä [ 2017-08-07 ] | ||||||||||||
|
This assertion fails nondeterministically during recovery. When retrying startup with the same dataset (re-applying the same redo log), no crash is observed.
so that I can get a stack trace from every thread. Due to the low reproducibility, running with --manual-gdb is not an option. | ||||||||||||
| Comment by Marko Mäkelä [ 2017-08-07 ] | ||||||||||||
|
Stack trace:
This code would only be executed in a ‘slow path’. Normally, mtr_t::Command::finish_write() would invoke log_reserve_and_write_fast(), which does not contain the assertion. This bug affects debug builds only. There is no real harm done; only a misplaced debug assertion is failing. | ||||||||||||
| Comment by Marko Mäkelä [ 2017-08-23 ] | ||||||||||||
|
The fix in MariaDB 10.2.8 was insufficient. On the very same call path, log_close() would trigger the same debug assertion, as witnessed on buildbot:
The fix (which will be in MariaDB 10.2.9) is simple: remove the assertion from log_close(). Every caller that requires this assertion already contains it. This bug only affects the debug server startup. It has no impact on production (non-debug) servers. |