Bug 1341942
Summary: | glusterd coredump due to assert failed with GF_ASSERT (GD_OP_HEAL_VOLUME == op) | ||||||
---|---|---|---|---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | George <george.lian> | ||||
Component: | glusterd | Assignee: | Pranith Kumar K <pkarampu> | ||||
Status: | CLOSED WONTFIX | QA Contact: | |||||
Severity: | urgent | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 3.6.9 | CC: | bugs, george.lian, rkavunga | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | If docs needed, set a value | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2016-08-01 04:42:12 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
George
2016-06-02 06:00:55 UTC
if possible, can you upload generated core file? was there any parallel cli commands running from any other server ? Created attachment 1165657 [details]
coredump file
(In reply to Mohammed Rafi KC from comment #1) > if possible, can you upload generated core file? was there any parallel cli > commands running from any other server ? core file uploaded as the attachment. maybe CLI run parallel, don't sure. the function glusterd_volume_heal_use_rsp_dict in 3.6.9 is GF_ASSERT (rsp_dict); op = glusterd_op_get_op (); GF_ASSERT (GD_OP_HEAL_VOLUME == op); and I just find in newest code in git repository the function "glusterd_volume_heal_use_rsp_dict" is changed as the below: GF_ASSERT (rsp_dict); ret = dict_get_bin (aggr, "transaction_id", (void **)&txn_id); if (ret) goto out; gf_msg_debug (THIS->name, 0, "transaction ID = %s", uuid_utoa (*txn_id)); ret = glusterd_get_txn_opinfo (txn_id, &txn_op_info); if (ret) { gf_msg_callingfn (THIS->name, GF_LOG_ERROR, 0, GD_MSG_TRANS_OPINFO_GET_FAIL, "Unable to get transaction opinfo " "for transaction ID : %s", uuid_utoa (*txn_id)); goto out; } op = txn_op_info.op; GF_ASSERT (GD_OP_HEAL_VOLUME == op); it should resove the GF_assert issue what I happen, but I am still confuse: 1) as the code in 3.6.9, I suppose if the first parameter is NULL, it will find the dict from global variable "opinfo.op" to get the dict. but from the latest code, it has no this logic. is it acceptable? 2) for the latest code, the added code seems only to check txn_op_info.op is valid or not, and seems no other use. it really confuse me. 3) and the else branch of code script in function as the below seems never will be ENTER! if (aggr) { ctx_dict = aggr; } else { ctx_dict = txn_op_info.op_ctx; } REASON: IF aggr is NULL, it will goto out in previous code, if it not null, else branch will not enter, so else branch never will be ENTER. This is not a security bug, not going to fix this in 3.6.x because of http://www.gluster.org/pipermail/gluster-users/2016-July/027682.html If the issue persists in the latest releases, please feel free to clone them |