[MDEV-14325] Mysqld crash, when innodb_open_files is greater than open_files_limit Created: 2017-11-08  Updated: 2019-03-18  Resolved: 2019-03-18

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

Type: Bug Priority: Major
Reporter: Alice Sherepa Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: not_windows

Issue Links:
Relates
relates to MDEV-13626 Merge InnoDB test cases from MySQL 5.7 Closed

 Description   

https://github.com/MariaDB/server/blob/mdev-13626/mysql-test/suite/innodb/t/innodb_file_limit_check.test

CREATE TABLE t1 (a INT)ENGINE=INNODB PARTITION BY HASH(a) PARTITIONS 1024;
let $restart_parameters = --innodb_open_files=1000000;
-- source include/restart_mysqld.inc

2017-11-08 11:54:18 140500668680000 [Note] InnoDB: 128 out of 128 rollback segments are active.
2017-11-08 11:54:18 140500668680000 [Note] InnoDB: Creating shared tablespace for temporary tables
2017-11-08 11:54:18 140500668680000 [ERROR] InnoDB: Operating system error number 24 in a file operation.
2017-11-08 11:54:18 140500668680000 [ERROR] InnoDB: Error number 24 means 'Too many open files'
2017-11-08 11:54:18 140500668680000 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html
2017-11-08 11:54:18 140500668680000 [ERROR] InnoDB: File ./ibtmp1: 'create' returned OS error 224. Cannot continue operation
171108 11:54:18 [ERROR] mysqld got signal 6 ;
Server version: 10.2.10-MariaDB-debug-log
key_buffer_size=1048576
read_buffer_size=131072
max_used_connections=0
max_threads=153
thread_count=0
It is possible that mysqld could use up to 
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 63152 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
 
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0x0 thread_stack 0x49000
(my_addr_resolve failure: pipe(in))
/home/alice/aliska/10.2/sql/mysqld(my_print_stacktrace+0x38) [0x55e0780954df]
/home/alice/aliska/10.2/sql/mysqld(handle_fatal_signal+0x3a3) [0x55e077926d62]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390) [0x7fc8db420390]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38) [0x7fc8da7d9428]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a) [0x7fc8da7db02a]
/home/alice/aliska/10.2/sql/mysqld(+0xb27415) [0x55e077c33415]
/home/alice/aliska/10.2/sql/mysqld(+0xb274bd) [0x55e077c334bd]
/home/alice/aliska/10.2/sql/mysqld(+0xb2556b) [0x55e077c3156b]
/home/alice/aliska/10.2/sql/mysqld(+0xd94dcb) [0x55e077ea0dcb]
/home/alice/aliska/10.2/sql/mysqld(+0xd95706) [0x55e077ea1706]
/home/alice/aliska/10.2/sql/mysqld(+0xd9d2a7) [0x55e077ea92a7]
/home/alice/aliska/10.2/sql/mysqld(+0xd9ea67) [0x55e077eaaa67]
/home/alice/aliska/10.2/sql/mysqld(+0xc24c3d) [0x55e077d30c3d]
/home/alice/aliska/10.2/sql/mysqld(+0xc28953) [0x55e077d34953]
/home/alice/aliska/10.2/sql/mysqld(+0xa661ea) [0x55e077b721ea]
/home/alice/aliska/10.2/sql/mysqld(ha_initialize_handlerton(st_plugin_int*)+0xfc) [0x55e077928dc5]
/home/alice/aliska/10.2/sql/mysqld(+0x5c4da6) [0x55e0776d0da6]
/home/alice/aliska/10.2/sql/mysqld(plugin_init(int*, char**, int)+0x90a) [0x55e0776d19ad]
/home/alice/aliska/10.2/sql/mysqld(+0x4d1391) [0x55e0775dd391]
/home/alice/aliska/10.2/sql/mysqld(mysqld_main(int, char**)+0x5f4) [0x55e0775de41d]
/home/alice/aliska/10.2/sql/mysqld(main+0x20) [0x55e0775d3020]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7fc8da7c4830]
/home/alice/aliska/10.2/sql/mysqld(_start+0x29) [0x55e0775d2ef9]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
Writing a core file
----------SERVER LOG END-------------

Thread 1 (Thread 0x7f7ee0f61740 (LWP 10428)):
#0  __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:62
#1  0x00005618255e25d1 in my_write_core (sig=6) at /home/alice/aliska/10.2/mysys/stacktrace.c:477
#2  0x0000561824e7410e in handle_fatal_signal (sig=6) at /home/alice/aliska/10.2/sql/signal_handler.cc:303
#3  <signal handler called>
#4  0x00007f7edf016428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#5  0x00007f7edf01802a in __GI_abort () at abort.c:89
#6  0x0000561825180415 in os_file_handle_error_cond_exit (name=0x561827cedc80 "./ibtmp1", operation=0x56182580472e "create", should_abort=true, on_error_silent=false) at /home/alice/aliska/10.2/storage/innobase/os/os0file.cc:5234
#7  0x00005618251804bd in os_file_handle_error (name=0x561827cedc80 "./ibtmp1", operation=0x56182580472e "create") at /home/alice/aliska/10.2/storage/innobase/os/os0file.cc:5252
#8  0x000056182517e56b in os_file_create_func (name=0x561827cedc80 "./ibtmp1", create_mode=52, purpose=62, type=100, read_only=false, success=0x7ffe24f9d4bf) at /home/alice/aliska/10.2/storage/innobase/os/os0file.cc:2985
#9  0x00005618253eddcb in pfs_os_file_create_func (key=47, name=0x561827cedc80 "./ibtmp1", create_mode=52, purpose=62, type=100, read_only=false, success=0x7ffe24f9d4bf, src_file=0x5618258edfd8 "/home/alice/aliska/10.2/storage/innobase/fsp/fsp0file.cc", src_line=77) at /home/alice/aliska/10.2/storage/innobase/include/os0file.ic:170
#10 0x00005618253ee706 in Datafile::open_or_create (this=0x561827dc4940, read_only_mode=false) at /home/alice/aliska/10.2/storage/innobase/fsp/fsp0file.cc:77
#11 0x00005618253f62a7 in SysTablespace::create_file (this=0x561826200020 <srv_tmp_space>, file=...) at /home/alice/aliska/10.2/storage/innobase/fsp/fsp0sysspace.cc:458
#12 0x00005618253f7a67 in SysTablespace::open_or_create (this=0x561826200020 <srv_tmp_space>, is_temp=true, create_new_db=false, sum_new_sizes=0x7ffe24f9d748, flush_lsn=0x0) at /home/alice/aliska/10.2/storage/innobase/fsp/fsp0sysspace.cc:876
#13 0x000056182527dc3d in srv_open_tmp_tablespace (create_new_db=false) at /home/alice/aliska/10.2/storage/innobase/srv/srv0start.cc:1193
#14 0x0000561825281953 in innobase_start_or_create_for_mysql () at /home/alice/aliska/10.2/storage/innobase/srv/srv0start.cc:2629
#15 0x00005618250bf1ea in innobase_init (p=0x561827dc4688) at /home/alice/aliska/10.2/storage/innobase/handler/ha_innodb.cc:4362
#16 0x0000561824e75dc5 in ha_initialize_handlerton (plugin=0x561827ce28f0) at /home/alice/aliska/10.2/sql/handler.cc:520
#17 0x0000561824c1dda6 in plugin_initialize (tmp_root=0x7ffe24fa5e30, plugin=0x561827ce28f0, argc=0x56182617d6b0 <remaining_argc>, argv=0x561827b98a28, options_only=false) at /home/alice/aliska/10.2/sql/sql_plugin.cc:1411
#18 0x0000561824c1e9ad in plugin_init (argc=0x56182617d6b0 <remaining_argc>, argv=0x561827b98a28, flags=2) at /home/alice/aliska/10.2/sql/sql_plugin.cc:1692
#19 0x0000561824b2a391 in init_server_components () at /home/alice/aliska/10.2/sql/mysqld.cc:5277
#20 0x0000561824b2b41d in mysqld_main (argc=146, argv=0x561827b98a28) at /home/alice/aliska/10.2/sql/mysqld.cc:5869
#21 0x0000561824b20020 in main (argc=24, argv=0x7ffe24fa6bc8) at /home/alice/aliska/10.2/sql/main.cc:25



 Comments   
Comment by Vladislav Vaintroub [ 2018-04-18 ]

Please, do not "fix" that on Windows, cause it is not broken there. there is no setrlimit, and one can CreateFile() until one drops, or untl 16 million handles are opened. But if file cannot be opened, on whatever reason there should not be a crash, really

Comment by Alice Sherepa [ 2019-03-18 ]

Not reproducible on current 10.2:

CREATE TABLE t1 (a INT)ENGINE=INNODB PARTITION BY HASH(a) PARTITIONS 1024;
2019-03-18 12:42:07 140279737547008 [Warning] InnoDB: innodb_open_files 1000000 should not be greaterthan the open_files_limit 1024

tiny typo - no space symbol "greaterthan"

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