[MDEV-13143] Server crashes in srv_init_abort_low() when started with inaccessible tmpdir Created: 2017-06-21  Updated: 2017-08-11  Resolved: 2017-07-05

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.2.7
Fix Version/s: 10.2.7

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-12905 InnoDB occasionally skips the doublew... Closed

 Description   

bin/mysqld_safe --no-defaults --tmpdir=/non-existing-dir

(or start the server with a non-existing or not accessible tmpdir in any other way)

10.2 0992be927e1c686c

#2  <signal handler called>
#3  0x000055c2e6ca4f33 in PolicyMutex<OSTrackMutex<GenericPolicy> >::pfs_begin_lock (this=0x0, state=0x7ffdfadb3180, name=0x55c2e724dc18 "/data/src/10.2/storage/innobase/os/os0file.cc", line=390) at /data/src/10.2/storage/innobase/include/ib0mutex.h:748
#4  0x000055c2e6ca4730 in PolicyMutex<OSTrackMutex<GenericPolicy> >::enter (this=0x0, n_spins=30, n_delay=6, name=0x55c2e724dc18 "/data/src/10.2/storage/innobase/os/os0file.cc", line=390) at /data/src/10.2/storage/innobase/include/ib0mutex.h:630
#5  0x000055c2e6ca38c2 in AIO::acquire (this=0x0) at /data/src/10.2/storage/innobase/os/os0file.cc:390
#6  0x000055c2e6c99f2c in AIO::pending_io_count (this=0x0) at /data/src/10.2/storage/innobase/os/os0file.cc:1011
#7  0x000055c2e6ca272f in AIO::total_pending_io_count () at /data/src/10.2/storage/innobase/os/os0file.cc:7299
#8  0x000055c2e6ca30a8 in os_aio_all_slots_free () at /data/src/10.2/storage/innobase/os/os0file.cc:7531
#9  0x000055c2e6d9d6fd in srv_shutdown_all_bg_threads () at /data/src/10.2/storage/innobase/srv/srv0start.cc:1296
#10 0x000055c2e6d9d9fb in srv_init_abort_low (create_new_db=false, file=0x55c2e72afbb8 "/data/src/10.2/storage/innobase/srv/srv0start.cc", line=1762, err=DB_ERROR) at /data/src/10.2/storage/innobase/srv/srv0start.cc:1356
#11 0x000055c2e6d9e9b4 in innobase_start_or_create_for_mysql () at /data/src/10.2/storage/innobase/srv/srv0start.cc:1762
#12 0x000055c2e6be1e1b in innobase_init (p=0x55c2e8545160) at /data/src/10.2/storage/innobase/handler/ha_innodb.cc:4433
#13 0x000055c2e68d8b69 in ha_initialize_handlerton (plugin=0x55c2e8536d70) at /data/src/10.2/sql/handler.cc:512
#14 0x000055c2e668399e in plugin_initialize (tmp_root=0x7ffdfadbb1d0, plugin=0x55c2e8536d70, argc=0x55c2e7ba86b0 <remaining_argc>, argv=0x55c2e84e23d8, options_only=false) at /data/src/10.2/sql/sql_plugin.cc:1407
#15 0x000055c2e66845a7 in plugin_init (argc=0x55c2e7ba86b0 <remaining_argc>, argv=0x55c2e84e23d8, flags=2) at /data/src/10.2/sql/sql_plugin.cc:1689
#16 0x000055c2e6591805 in init_server_components () at /data/src/10.2/sql/mysqld.cc:5253
#17 0x000055c2e659288a in mysqld_main (argc=8, argv=0x55c2e84e23d8) at /data/src/10.2/sql/mysqld.cc:5843
#18 0x000055c2e65877b0 in main (argc=7, argv=0x7ffdfadbbf68) at /data/src/10.2/sql/main.cc:25

Till recently it was

2017-06-21 18:56:17 140244026074560 [Note] /data/releases/10.2.6/bin/mysqld (mysqld 10.2.6-MariaDB) starting as process 27388 ...
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Uses event mutexes
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Compressed tables use zlib 1.2.3
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Using Linux native AIO
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Number of pools: 1
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Using SSE2 crc32 instructions
2017-06-21 18:56:17 140244026074560 [ERROR] mysqld: Can't create/write to file '/non-existing-dir/ibx2zVld' (Errcode: 2 "No such file or directory")
2017-06-21 18:56:17 140244026074560 [ERROR] InnoDB: Unable to create temporary file; errno: 2
2017-06-21 18:56:17 140244026074560 [ERROR] mysqld: Can't create/write to file '/non-existing-dir/ibPIy95v' (Errcode: 2 "No such file or directory")
2017-06-21 18:56:17 140244026074560 [ERROR] InnoDB: Unable to create temporary file; errno: 2
2017-06-21 18:56:17 140244026074560 [ERROR] mysqld: Can't create/write to file '/non-existing-dir/ibbGsnQO' (Errcode: 2 "No such file or directory")
2017-06-21 18:56:17 140244026074560 [ERROR] InnoDB: Unable to create temporary file; errno: 2
2017-06-21 18:56:17 140244026074560 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2017-06-21 18:56:17 140244026074560 [Note] InnoDB: Starting shutdown...
2017-06-21 18:56:17 140244026074560 [ERROR] Plugin 'InnoDB' init function returned error.
2017-06-21 18:56:17 140244026074560 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-06-21 18:56:17 140244026074560 [Note] Plugin 'FEEDBACK' is disabled.
2017-06-21 18:56:17 140244026074560 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-06-21 18:56:17 140244026074560 [ERROR] Aborting



 Comments   
Comment by Marko Mäkelä [ 2017-07-05 ]

This is a bug in aborted InnoDB startup.
AIO::total_pending_io_count() is dereferencing AIO::s_reads which was never initialized, because os_aio_init() was not yet called.

In a shutdown after a successful startup, os_aio_init() would have been called successfully when srv_shutdown_all_bg_threads() is invoked, and os_aio_free() would only be called after all I/O threads were observed to exit.

Generated at Thu Feb 08 08:03:13 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.