MySQL bug #60788: InnoDB crashes with an assertion failure when receiving a signal on pwrite()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MySQL Server |
Unknown
|
Unknown
|
|||
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
Undecided
|
Alexey Kopytov | ||
5.1 |
Fix Released
|
Undecided
|
Alexey Kopytov |
Bug Description
Reporting http://
Description:
According to POSIX write()/pwrite() return -1 with errno set to EINTR when those calls
are interrupted by a signal before they write any data, or return the number of bytes
written if a signal is received after successfully writing some data.
Neither of those cases are handled correctly by InnoDB. Here is an example of pwrite()
returning -1 with errno set to EINTR:
InnoDB: Error: Write to file ./test/test.ibd failed at offset 0 5308416.
InnoDB: 983040 bytes should have been written, only -1 were written.
InnoDB: Operating system error number 4.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a disk quota exceeded.
InnoDB: Error number 4 means 'Interrupted system call'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://
InnoDB: Assertion failure in thread 1140169024 in file os/os0file.c line 4205
InnoDB: Failing assertion: ret
InnoDB: We intentionally generate a memory trap.
MyISAM is not affected by this problem because mysys handles those cases correctly by
restarting the write.
I think all of the above applies to reads as well.
How to repeat:
Examine the os_file_
my_pwrite(
Related branches
- Yasufumi Kinoshita (community): Approve
-
Diff: 137 lines (+125/-0)2 files modifiedinnodb_bug60788.patch (+124/-0)
series (+1/-0)
Changed in percona-server: | |
status: | In Progress → Fix Committed |
Changed in percona-server: | |
milestone: | none → 5.5-20.2stable |
status: | Fix Committed → Fix Released |
tags: | added: upstream |
Creating a remote bug watch: http:// bugs.mysql. com/bug. php?id= 60788