[MDEV-19298] Assertion `space->id != 0xFFFFFFFEU || space == fil_system.temp_space' failed in Check::validate upon crash upgrade from 10.2.22 Created: 2019-04-21 Updated: 2020-07-31 Resolved: 2020-06-27 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Tests |
| Affects Version/s: | 10.3, 10.4 |
| Fix Version/s: | 10.3.24, 10.4.14, 10.5.5 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Elena Stepanova | Assignee: | Eugene Kosov (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||||||
| Description |
|
The failure happens upon 10.3 startup on this datadir with
but it's very poorly reproducible: it only happens once in hundreds of consequent attempts (even though there is no external concurrency there, just simple server startup on the same datadir); on some reason, so far it's only happened on an ASAN build; and it might also be limited to some particular systems – I was able to reproduce it on Xenial but not on Jessie, although given the irregularity, it could be a coincidence. |
| Comments |
| Comment by Marko Mäkelä [ 2019-06-12 ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
I just got this locally on 10.5 once, and analyzed the core dump. The space indeed is the temporary tablespace, and space==fil_system.temp_space does hold in the core dump. For me, the assertion failed in a different thread:
This thread is trying to roll back something in a user table test.t1 of the test innodb.innodb-64k-crash. The fil_system.temp_space is being created in srv_open_tmp_tablespace(). It does make sense to defer the creation, because we want to avoid writing to the file system if the persistent files cannot be recovered. But, maybe the assignment in SysTablespace::open_or_create() should be properly protected by fil_system.mutex, or it should be pushed down to fil_space_create()? On a related note, we should not release fil_system.mutex in the middle of creating fil_space_t, and we should accordingly remove all code that checks if space->chain is empty. We should simply not add an incomplete fil_space_t to fil_system. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Elena Stepanova [ 2019-06-17 ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
mariabackup.partial failed in buildbot with what is apparently the same problem:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Elena Stepanova [ 2019-07-30 ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
http://buildbot.askmonty.org/buildbot/builders/kvm-asan/builds/1753
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Comment by Eugene Kosov (Inactive) [ 2020-06-27 ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
This issue is pretty much the same as https://jira.mariadb.org/browse/MDEV-20213 and the same analysis applies. |