Skip to content

Suspicious misuse of thread lock #464

@microwish

Description

@microwish

I used valgrind --tool=helgrind to debug program, and there were many errors like "lock order "0x636BCC8 before 0x636BC50" violated", e.g.:

==13891== Thread #11: lock order "0x636BCC8 before 0x636BC50" violated
==13891==
==13891== Observed (incorrect) order is: acquisition of lock at 0x636BC50
==13891== at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==13891== by 0x5EF0E58: mtx_lock (tinycthread.c:135)
==13891== by 0x5EEA1DC: rd_kafka_toppar_fetch_decide (rdkafka_partition.c:1208)
==13891== by 0x5ECDE1E: rd_kafka_broker_thread_main (rdkafka_broker.c:2098)
==13891== by 0x5EF0AEE: thrd_wrapper_function (tinycthread.c:596)
==13891== by 0x4A0C0D4: mythread_wrapper (hg_intercepts.c:219)
==13891== by 0x3EDEE07A50: start_thread (in /lib64/libpthread-2.12.so)
==13891== by 0x3EDE6E893C: clone (in /lib64/libc-2.12.so)
==13891==
==13891== followed by a later acquisition of lock at 0x636BCC8
==13891== at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==13891== by 0x5EF0E58: mtx_lock (tinycthread.c:135)
==13891== by 0x5EE9D59: rd_kafka_q_len (rdkafka_queue.h:193)
==13891== by 0x5EEA45C: rd_kafka_toppar_fetch_decide (rdkafka_partition.c:1245)
==13891== by 0x5ECDE1E: rd_kafka_broker_thread_main (rdkafka_broker.c:2098)
==13891== by 0x5EF0AEE: thrd_wrapper_function (tinycthread.c:596)
==13891== by 0x4A0C0D4: mythread_wrapper (hg_intercepts.c:219)
==13891== by 0x3EDEE07A50: start_thread (in /lib64/libpthread-2.12.so)
==13891== by 0x3EDE6E893C: clone (in /lib64/libc-2.12.so)
==13891==
==13891== Required order was established by acquisition of lock at 0x636BCC8
==13891== at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==13891== by 0x5EF0E58: mtx_lock (tinycthread.c:135)
==13891== by 0x5EDB6EF: rd_kafka_q_serve_rkmessages (rdkafka_queue.c:437)
==13891== by 0x5EC592B: rd_kafka_consume_batch (rdkafka.c:1387)
==13891== by 0x4C1598C: consume_messages(rd_kafka_s
, rd_kafka_topic_s
, int, long, void ()(rd_kafka_message_s, void_)) (PyKafkaClient.cpp:606)
==13891== by 0x406C33: consume_to_local(void_) (kafka2hdfs.cpp:583)
==13891== by 0x4A0C0D4: mythread_wrapper (hg_intercepts.c:219)
==13891== by 0x3EDEE07A50: start_thread (in /lib64/libpthread-2.12.so)
==13891== by 0x3EDE6E893C: clone (in /lib64/libc-2.12.so)
==13891==
==13891== followed by a later acquisition of lock at 0x636BC50
==13891== at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==13891== by 0x5EF0E58: mtx_lock (tinycthread.c:135)
==13891== by 0x5EDB8F4: rd_kafka_q_serve_rkmessages (rdkafka_offset.h:48)
==13891== by 0x5EC592B: rd_kafka_consume_batch (rdkafka.c:1387)
==13891== by 0x4C1598C: consume_messages(rd_kafka_s_, rd_kafka_topic_s_, int, long, void ()(rd_kafka_message_s, void_)) (PyKafkaClient.cpp:606)
==13891== by 0x406C33: consume_to_local(void_) (kafka2hdfs.cpp:583)
==13891== by 0x4A0C0D4: mythread_wrapper (hg_intercepts.c:219)
==13891== by 0x3EDEE07A50: start_thread (in /lib64/libpthread-2.12.so)
==13891== by 0x3EDE6E893C: clone (in /lib64/libc-2.12.so)

Is that normal?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions