Bug 601277
Summary: | qpidd broker crash | ||
---|---|---|---|
Product: | Red Hat Enterprise MRG | Reporter: | Pete MacKinnon <pmackinn> |
Component: | qpid-cpp | Assignee: | Ted Ross <tross> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | MRG Quality Engineering <mrgqe-bugs> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | Development | CC: | freznice, kgiusti, pmackinn, tross |
Target Milestone: | 1.3 | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2010-10-13 13:37:40 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Pete MacKinnon
2010-06-07 15:38:16 UTC
mrg31 qpid-cpp-server-0.7.946106-2.el5 Maybe needs a lock in the RemoteAgent dtor? ManagementAgent::RemoteAgent::~RemoteAgent () { QPID_LOG(trace, "Remote Agent removed bank=[" << brokerBank << "." << agentBank << "]"); if (mgmtObject != 0) { mgmtObject->resourceDestroy(); agent.deleteObjectNowLH(mgmtObject->getObjectId()); } } Possibly fixed upstream at revision 953107. There was a window of opportunity where, if an exception was thrown, a pointer to deleted heap memory could have been used for a second delete. Pete, Ted, this bug does not contain any description of scenario when (under which conditions) crash was observed. Raising needinfo for you. Frantisek, I was unable to reproduce the failure but I think I know what was happening... My theory is that an agent (must be QMFv1, like the ruby agent, Wallaby agent, etc) disconnected and then immediately reconnected at the same time a management console (i.e. mint, qpid-tool, etc.) was experiencing congestion (i.e. the console's private queue was full). Here's a possible reproducer: 1) Run a broker and a QMFv1 agent (you could use a MRG1.2 sesame for this) 2) Create a queue with a specific queue limit 3) Bind the queue to exchange "qpid.management" with key "console.obj.1.0.org.apache.qpid.broker.agent" 4) produce messages directly to the queue in sufficient quantity to fill the queue. 5) disconnect and reconnect the agent -Ted |