Description:
Hi:
we encounter a problem, some time,innodb is hang then crash(900s long semaphore)
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 254
--Thread 140138344982272 has waited at srv0tmp.h line 182 for 274 seconds the semaphore:
Mutex at 0x7f75c88c7198, Mutex TEMP_POOL_MANAGER created srv0tmp.cc:181, lock var 1
--Thread 140138346751744 has waited at srv0tmp.h line 182 for 874 seconds the semaphore:
Mutex at 0x7f75c88c7198, Mutex TEMP_POOL_MANAGER created srv0tmp.cc:181, lock var 1
we use pstack tool to catch stack report.find some user thread wait at log_wait_for_flush, example:
Thread 5 (Thread 0x7f7480652700 (LWP 14973)):
#0 0x00007f75e55a1d42 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x00000000020ace25 in os_event::timed_wait(timespec const*) () at ../../../mysql-8.0.19/storage/innobase/include/sync0types.h:540
#2 0x00000000020ad9e1 in os_event::wait_time_low (this=0x7f75c83a5c98, time_in_usec=<optimized out>, reset_sig_count=1) at ../../../mysql-8.0.19/storage/innobase/os/os0event.cc:495
#3 0x0000000002091331 in os_event_wait_for<log_wait_for_flush(const log_t&, lsn_t)::<lambda(bool)> > (condition=..., timeout=100000, spins_limit=<optimized out>, event=@0x7f75c8392790: 0x7f75c83a5c98) at /opt/rh/devtoolset-8/root/usr/include/c++/8/ext/new_allocator.h:86
#4 log_wait_for_flush (lsn=3436585392735, log=...) at ../../../mysql-8.0.19/storage/innobase/log/log0write.cc:896
here wait to flush lsn is 3436585392735 , but in err.log "Log buffer completed up to"(log.recent_written.tail) has always been 3436585392273 until 900s long semaphore crash,
---
LOG
---
Log sequence number 3436585392795
Log buffer assigned up to 3436585392795
Log buffer completed up to 3436585392273
Log written up to 3436585392273
Log flushed up to 3436585392273
Added dirty pages up to 3436585392795
Pages flushed up to 3436585391907
Last checkpoint at 3436585391907
so user thread wait log_wait_for_flush , but log_writer have no thing to do.
errlog and pstack see the attachment。
have any bug here? thanks!!
How to repeat:
i dont kown.
Suggested fix:
i dont kown.