Bug #45988 InnoDB: Error: semaphore wait has lasted > 600 seconds

Submitted: 7 Jul 2009 5:23 Modified: 8 Sep 2009 9:31
Reporter: Pavel Shevaev Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:mysql-5.0.70-r1 OS:Linux (2.6.24-gentoo-r7 x86_64)
Assigned to: CPU Architecture:Any
Tags: innodb semaphore

[7 Jul 2009 5:23] Pavel Shevaev
Description:
For a couple of days MySQL crashes every night with the following error:

InnoDB: ###### Diagnostic info printed to the standard error stream
InnoDB: Error: semaphore wait has lasted > 600 seconds
InnoDB: We intentionally crash the server, because it appears to be hung.
090707  3:42:25InnoDB: Assertion failure in thread 47299103967568 in file srv0srv.c line 2097
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: about forcing recovery.
090707  3:42:25 - mysqld got signal 11 ;

How to repeat:
I really don't know how to repeat it since it happens pretty sporadically. There is no higload on the server, ganglia reported the following MySQL statistics on the moment of crash:

mysql_max_used_connections 8
mysql_com_select 2
mysql_com_insert 0
mysql_com_delete 0
mysql_threads_connected 2
mysql_slow_queries 0

I also browsed mysqld.err logs for some time and discovered that the following warning happens periodically:

InnoDB: ###### Diagnostic info printed to the standard error stream
InnoDB: Warning: a long semaphore wait:
--Thread 47299114490192 has waited at ./../include/trx0undo.ic line 127 for 911.00 seconds the semaphore:
X-lock on RW-latch at 0x2b04aa55da78 created in file buf0buf.c line 497
a writer (thread id 47299114490192) has reserved it in mode  wait exclusive
number of readers 1, waiters flag 1
Last time read locked in file buf0flu.c line 585
Last time write locked in file ./../include/trx0undo.ic line 127
InnoDB: ###### Starts InnoDB Monitor for 30 secs to print diagnostic info:
InnoDB: Pending preads 0, pwrites 0
[7 Jul 2009 5:27] Pavel Shevaev
INNODB MONITOR OUTPUT

Attachment: mysqld.err.last (application/octet-stream, text), 4.48 KiB.

[7 Jul 2009 5:32] Pavel Shevaev
Suspicious warnings just before the crash

Attachment: mysqld.err.before (application/octet-stream, text), 465.85 KiB.

[7 Jul 2009 6:21] Valeriy Kravchuk
Thank you for the problem report. Looks like this happens during COMMIT when flushing a lot of pages to disk. Do you have some huge transactions changing a lot of rows? See also http://forums.mysql.com/read.php?22,116765,118626.

Send your my.cnf file content (or SHOW GLOBAL VARIABLES results), please.
[7 Jul 2009 6:31] Pavel Shevaev
my.cnf

Attachment: my.cnf (application/octet-stream, text), 4.13 KiB.

[7 Jul 2009 6:47] Pavel Shevaev
> Do you have some huge transactions changing a lot of rows?

Well, first of all what is a huge transaction? :) In my app I do have some transactions but they are all pretty simple, mostly: UPDATE .. SET .. WHERE id=N and some INSERT queries. No ALTER TABLE queries at all.

BTW, I have only one database with ~20 tables which all have about ~75k records in total.
[7 Jul 2009 6:59] Pavel Shevaev
$ mysql -e"SHOW GLOBAL VARIABLES" -B

auto_increment_increment	1
auto_increment_offset	1
automatic_sp_privileges	ON
back_log	50
basedir	/usr/
binlog_cache_size	32768
bulk_insert_buffer_size	8388608
character_set_client	utf8
character_set_connection	utf8
character_set_database	utf8
character_set_filesystem	binary
character_set_results	utf8
character_set_server	utf8
character_set_system	utf8
character_sets_dir	/usr/share/mysql/charsets/
collation_connection	utf8_general_ci
collation_database	utf8_general_ci
collation_server	utf8_general_ci
completion_type	0
concurrent_insert	1
connect_timeout	10
datadir	/var/lib/mysql/
date_format	%Y-%m-%d
datetime_format	%Y-%m-%d %H:%i:%s
default_week_format	0
delay_key_write	ON
delayed_insert_limit	100
delayed_insert_timeout	300
delayed_queue_size	1000
div_precision_increment	4
keep_files_on_create	OFF
engine_condition_pushdown	OFF
expire_logs_days	0
flush	OFF
flush_time	0
ft_boolean_syntax	+ -><()~*:""&|
ft_max_word_len	84
ft_min_word_len	4
ft_query_expansion_limit	20
ft_stopword_file	(built-in)
group_concat_max_len	1024
have_archive	NO
have_bdb	NO
have_blackhole_engine	NO
have_compress	YES
have_crypt	YES
have_csv	NO
have_dynamic_loading	YES
have_example_engine	NO
have_federated_engine	NO
have_geometry	YES
have_innodb	YES
have_isam	NO
have_merge_engine	YES
have_ndbcluster	NO
have_openssl	DISABLED
have_ssl	DISABLED
have_query_cache	YES
have_raid	NO
have_rtree_keys	YES
have_symlink	YES
hostname	gamed.zveriki.com
init_connect	
init_file	
init_slave	
innodb_additional_mem_pool_size	2097152
innodb_autoextend_increment	8
innodb_buffer_pool_awe_mem_mb	0
innodb_buffer_pool_size	16777216
innodb_checksums	ON
innodb_commit_concurrency	0
innodb_concurrency_tickets	500
innodb_data_file_path	ibdata1:10M:autoextend:max:128M
innodb_data_home_dir	
innodb_adaptive_hash_index	ON
innodb_doublewrite	ON
innodb_fast_shutdown	1
innodb_file_io_threads	4
innodb_file_per_table	ON
innodb_flush_log_at_trx_commit	1
innodb_flush_method	
innodb_force_recovery	0
innodb_lock_wait_timeout	50
innodb_locks_unsafe_for_binlog	OFF
innodb_log_arch_dir	
innodb_log_archive	OFF
innodb_log_buffer_size	8388608
innodb_log_file_size	5242880
innodb_log_files_in_group	2
innodb_log_group_home_dir	./
innodb_max_dirty_pages_pct	90
innodb_max_purge_lag	0
innodb_mirrored_log_groups	1
innodb_open_files	300
innodb_rollback_on_timeout	OFF
innodb_support_xa	ON
innodb_sync_spin_loops	20
innodb_table_locks	ON
innodb_thread_concurrency	8
innodb_thread_sleep_delay	10000
interactive_timeout	28800
join_buffer_size	131072
key_buffer_size	16777216
key_cache_age_threshold	300
key_cache_block_size	1024
key_cache_division_limit	100
language	/usr/share/mysql/english/
large_files_support	ON
large_page_size	0
large_pages	OFF
lc_time_names	en_US
license	GPL
local_infile	ON
locked_in_memory	OFF
log	OFF
log_bin	ON
log_bin_trust_function_creators	OFF
log_error	/var/log/mysql/mysqld.err
log_queries_not_using_indexes	OFF
log_slave_updates	OFF
log_slow_queries	OFF
log_warnings	1
long_query_time	10
low_priority_updates	OFF
lower_case_file_system	OFF
lower_case_table_names	0
max_allowed_packet	1048576
max_binlog_cache_size	18446744073709547520
max_binlog_size	1073741824
max_connect_errors	10
max_connections	100
max_delayed_threads	20
max_error_count	64
max_heap_table_size	16777216
max_insert_delayed_threads	20
max_join_size	18446744073709551615
max_length_for_sort_data	1024
max_prepared_stmt_count	16382
max_relay_log_size	0
max_seeks_for_key	18446744073709551615
max_sort_length	1024
max_sp_recursion_depth	0
max_tmp_tables	32
max_user_connections	0
max_write_lock_count	18446744073709551615
multi_range_count	256
myisam_data_pointer_size	6
myisam_max_sort_file_size	9223372036853727232
myisam_recover_options	OFF
myisam_repair_threads	1
myisam_sort_buffer_size	8388608
myisam_stats_method	nulls_unequal
net_buffer_length	8192
net_read_timeout	30
net_retry_count	10
net_write_timeout	60
new	OFF
old_passwords	OFF
open_files_limit	1024
optimizer_prune_level	1
optimizer_search_depth	62
pid_file	/var/run/mysqld/mysqld.pid
plugin_dir	
port	3306
preload_buffer_size	32768
protocol_version	10
query_alloc_block_size	8192
query_cache_limit	1048576
query_cache_min_res_unit	4096
query_cache_size	0
query_cache_type	ON
query_cache_wlock_invalidate	OFF
query_prealloc_size	8192
range_alloc_block_size	4096
read_buffer_size	262144
read_only	OFF
read_rnd_buffer_size	524288
relay_log	
relay_log_index	
relay_log_info_file	relay-log.info
relay_log_purge	ON
relay_log_space_limit	0
rpl_recovery_rank	0
secure_auth	OFF
secure_file_priv	
server_id	1
skip_external_locking	ON
skip_networking	OFF
skip_show_database	OFF
slave_compressed_protocol	OFF
slave_load_tmpdir	/tmp/
slave_net_timeout	3600
slave_skip_errors	OFF
slave_transaction_retries	10
slow_launch_time	2
socket	/var/run/mysqld/mysqld.sock
sort_buffer_size	524288
sql_big_selects	ON
sql_mode	
sql_notes	ON
sql_warnings	OFF
ssl_ca	
ssl_capath	
ssl_cert	
ssl_cipher	
ssl_key	
storage_engine	MyISAM
sync_binlog	0
sync_frm	ON
system_time_zone	MSD
table_cache	64
table_lock_wait_timeout	50
table_type	MyISAM
thread_cache_size	0
thread_stack	262144
time_format	%H:%i:%s
time_zone	SYSTEM
timed_mutexes	OFF
tmp_table_size	33554432
tmpdir	/tmp/
transaction_alloc_block_size	8192
transaction_prealloc_size	4096
tx_isolation	REPEATABLE-READ
updatable_views_with_limit	YES
version	5.0.70-log
version_comment	Gentoo Linux mysql-5.0.70-r1
version_compile_machine	x86_64
version_compile_os	pc-linux-gnu
wait_timeout	28800
[15 Jul 2009 11:03] Daniel Fiske
I'm getting an almost identical issue under 5.0.83 on Windows XP.
[26 Jul 2009 19:47] Valeriy Kravchuk
Please, send the results of

free

Linux command. I wonder how much (free) RAM do you have as I had noted this:

innodb_buffer_pool_size = 16M

in your my.cnf. This is too small for most practical cases...
[26 Aug 2009 23:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
[27 Aug 2009 0:02] MySQL Verification Team
Still feedback is needed.
[27 Aug 2009 5:24] Pavel Shevaev
I think I've spotted the use case when this happens. I have a log rotation routine running by cron every night and when a really large log file is processed(about 6GB) it seems the IO subsystem becomes the real bottleneck. I have ganglia monitoring and it shows that mysqld crashes with such error during this log rotation period...
[8 Sep 2009 9:31] Susanne Ebrecht
This is a duplicate of bug #47183
[15 Sep 2009 12:48] Daniel Fiske
Susanne Ebrecht....WTF? SERIOUSLY....W.T.F?

How can an old bug reported with lots of feedback from 7 July be marked as a duplicate of a new bug from 8 September which is marked as "Needs Feedback"?

Please explain?

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.065 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.