==23675== Helgrind, a thread error detector ==23675== Copyright (C) 2007-2010, and GNU GPL'd, by OpenWorks LLP et al. ==23675== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==23675== Command: ./objc-deadlock ==23675== Parent PID: 19496 ==23675== ==23675== Thread #2 was created ==23675== at 0x512646E: clone (clone.S:77) ==23675== by 0x53DBDCF: T.124 (createthread.c:75) ==23675== by 0x53DC2CA: pthread_create@@GLIBC_2.2.5 (createthread.c:256) ==23675== by 0x4C2889D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x400936: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #2: lock order "0x504FBD8 before 0x583E348" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B00: checkARCAccessors (dtable.c:54) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== followed by a later acquisition of lock at 0x583E348 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== Thread #2: lock order "0x504FBD8 before 0x583E348" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B37: checkARCAccessors (dtable.c:60) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== followed by a later acquisition of lock at 0x583E348 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== Thread #2: lock order "0x504FBD8 before 0x583E348" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B6E: checkARCAccessors (dtable.c:66) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== followed by a later acquisition of lock at 0x583E348 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== Thread #2: lock order "0x504FBD8 before 0x583E348" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E3A06F: objc_send_initialize (dtable.c:622) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== followed by a later acquisition of lock at 0x583E348 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E39E50: objc_send_initialize (dtable.c:666) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== Thread #1 is the program's root thread ==23675== ==23675== Thread #1: lock order "0x504FBD8 before 0x5841BC8" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B00: checkARCAccessors (dtable.c:54) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== followed by a later acquisition of lock at 0x5841BC8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #1: lock order "0x504FBD8 before 0x5841BC8" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B37: checkARCAccessors (dtable.c:60) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== followed by a later acquisition of lock at 0x5841BC8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #1: lock order "0x504FBD8 before 0x5841BC8" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E42F9F: objc_get_slot (dtable.h:66) ==23675== by 0x4E39B6E: checkARCAccessors (dtable.c:66) ==23675== by 0x4E3A051: objc_send_initialize (dtable.c:728) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== followed by a later acquisition of lock at 0x5841BC8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #2: lock order "0x504FBD8 before 0x58407A8" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E43420: objc_msg_lookup (dtable.h:66) ==23675== by 0x400881: _c_A__initialize (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4E3A063: objc_send_initialize (dtable.c:733) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== followed by a later acquisition of lock at 0x58407A8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== Thread #1: lock order "0x504FBD8 before 0x5841BC8" violated ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E43420: objc_msg_lookup (dtable.h:66) ==23675== by 0x4008E1: _c_B__initialize (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4E3A063: objc_send_initialize (dtable.c:733) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== Required order was established by acquisition of lock at 0x504FBD8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E39E5C: objc_send_initialize (dtable.c:669) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== followed by a later acquisition of lock at 0x5841BC8 ==23675== at 0x4C2902D: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E39F40: objc_send_initialize (dtable.c:686) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #1: Exiting thread still holds 1 lock ==23675== at 0x53E2CEC: __lll_lock_wait (lowlevellock.S:136) ==23675== by 0x53DE353: _L_lock_997 (pthread_mutex_lock.c:117) ==23675== by 0x53DE1B5: pthread_mutex_lock (pthread_mutex_lock.c:82) ==23675== by 0x4C28F5B: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E43476: objc_msg_lookup (dtable.h:98) ==23675== by 0x4008E1: _c_B__initialize (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4E3A063: objc_send_initialize (dtable.c:733) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x40095F: main (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== ==23675== Thread #2: Exiting thread still holds 1 lock ==23675== at 0x53E2CEC: __lll_lock_wait (lowlevellock.S:136) ==23675== by 0x53DE353: _L_lock_997 (pthread_mutex_lock.c:117) ==23675== by 0x53DE1B5: pthread_mutex_lock (pthread_mutex_lock.c:82) ==23675== by 0x4C28F5B: pthread_mutex_lock (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x4E45F3C: objc_sync_enter (associate.m:366) ==23675== by 0x4E43476: objc_msg_lookup (dtable.h:98) ==23675== by 0x400881: _c_A__initialize (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4E3A063: objc_send_initialize (dtable.c:733) ==23675== by 0x4E434A2: objc_msg_lookup (sendmsg2.c:67) ==23675== by 0x4009E9: thread_entry (in /local-homes/mortehu/src/test-cases/objc-deadlock) ==23675== by 0x4C28A2D: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==23675== by 0x53DBB4F: start_thread (pthread_create.c:304) ==23675== ==23675== ==23675== For counts of detected and suppressed errors, rerun with: -v ==23675== Use --history-level=approx or =none to gain increased speed, at ==23675== the cost of reduced accuracy of conflicting-access information ==23675== ERROR SUMMARY: 14 errors from 11 contexts (suppressed: 102 from 102)