Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1051924 - [linearstore] Recovery of journal in which last logical file contains truncated record causes crash
Summary: [linearstore] Recovery of journal in which last logical file contains truncat...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: 3.0
: ---
Assignee: Kim van der Riet
QA Contact: Zdenek Kraus
URL:
Whiteboard:
Depends On:
Blocks: 709325
TreeView+ depends on / blocked
 
Reported: 2014-01-12 22:34 UTC by Kim van der Riet
Modified: 2015-01-21 12:57 UTC (History)
4 users (show)

Fixed In Version: qpid-cpp-0.22-33
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-01-21 12:57:21 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Apache JIRA QPID-5473 None None None Never

Description Kim van der Riet 2014-01-12 22:34:47 UTC
When the store recovery process encounters a journal where the last logical file is full and the last record in that file is also incomplete (ie this record would ordinarily span this journal file and the next if it were present), then the recovery process crashes with a segfault.

There is no specific reproducer, but using large message sizes in a test will increase the probability that this error will occur, and killing the broker suddenly (ie with signal SIGKILL) increases the probability that this error will occur.

Although untested, this error could also be synthesized by deleting the last file(s) in a valid journal provided that the last record in the remaining journal files is still undequeued and spans to a deleted file. ie Enqueue enough large records to fill 2 or 3 journal files. Recover the journal using info level logging, and look at the table of recovered files and their logical ordering. Starting at the second-last file, look for a journal file using hexdump or a journal analysis tool where the last record spans that journal file and the next. Then delete the following journal file(s).

Comment 1 Kim van der Riet 2014-01-12 22:35:37 UTC
Tracked in upstream bug https://issues.apache.org/jira/browse/QPID-5473.

Comment 2 Kim van der Riet 2014-01-12 22:43:36 UTC
Fixed in r.1557620

Comment 5 Zdenek Kraus 2014-03-19 13:52:02 UTC
this issue was tested on RHEL 6.5 i686 & x86_64 with following packages:

perl-qpid-0.22-11.el6
python-qpid-0.22-12.el6
python-qpid-qmf-0.22-28.el6
qpid-cpp-client-0.22-36.el6
qpid-cpp-client-devel-0.22-36.el6
qpid-cpp-client-devel-docs-0.22-36.el6
qpid-cpp-debuginfo-0.22-36.el6
qpid-cpp-server-0.22-36.el6
qpid-cpp-server-devel-0.22-36.el6
qpid-cpp-server-ha-0.22-36.el6
qpid-cpp-server-linearstore-0.22-36.el6
qpid-cpp-server-xml-0.22-36.el6
qpid-java-client-0.22-6.el6
qpid-java-common-0.22-6.el6
qpid-java-example-0.22-6.el6
qpid-jca-0.22-2.el6
qpid-jca-xarecovery-0.22-2.el6
qpid-proton-c-0.6-1.el6
qpid-proton-c-devel-0.6-1.el6
qpid-proton-debuginfo-0.6-1.el6
qpid-qmf-0.22-28.el6
qpid-qmf-debuginfo-0.22-28.el6
qpid-snmpd-1.0.0-16.el6
qpid-snmpd-debuginfo-1.0.0-16.el6
qpid-tools-0.22-9.el6
ruby-qpid-qmf-0.22-28.el6


-> VERIFIED


Note You need to log in before you can comment on or make changes to this bug.