==29406== Helgrind, a thread error detector ==29406== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al. ==29406== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==29406== Command: ./philo 5 500 200 200 5 ==29406== ==29406== ---Thread-Announcement------------------------------------------ ==29406== ==29406== Thread #3 was created ==29406== at 0x518470E: clone (clone.S:71) ==29406== by 0x4E4BEC4: create_thread (createthread.c:100) ==29406== by 0x4E4BEC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797) ==29406== by 0x4C38A27: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400E19: launch (launch.c:85) ==29406== by 0x4007DD: main (main.c:24) ==29406== ==29406== ---------------------------------------------------------------- ==29406== ==29406== Thread #3: lock order "0x54542E8 before 0x54541F8" violated ==29406== ==29406== Observed (incorrect) order is: acquisition of lock at 0x54541F8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4011BC: eat (exec.c:38) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== followed by a later acquisition of lock at 0x54542E8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x401226: eat (exec.c:43) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== Lock at 0x54542E8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54542e8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== Lock at 0x54541F8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54541f8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== ==29406== ---Thread-Announcement------------------------------------------ ==29406== ==29406== Thread #5 was created ==29406== at 0x518470E: clone (clone.S:71) ==29406== by 0x4E4BEC4: create_thread (createthread.c:100) ==29406== by 0x4E4BEC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797) ==29406== by 0x4C38A27: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400E19: launch (launch.c:85) ==29406== by 0x4007DD: main (main.c:24) ==29406== ==29406== ---------------------------------------------------------------- ==29406== ==29406== Thread #5: lock order "0x54544C8 before 0x54543D8" violated ==29406== ==29406== Observed (incorrect) order is: acquisition of lock at 0x54543D8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4011BC: eat (exec.c:38) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== followed by a later acquisition of lock at 0x54544C8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x401226: eat (exec.c:43) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== Lock at 0x54544C8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54544c8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== Lock at 0x54543D8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54543d8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== ==29406== ---Thread-Announcement------------------------------------------ ==29406== ==29406== Thread #2 was created ==29406== at 0x518470E: clone (clone.S:71) ==29406== by 0x4E4BEC4: create_thread (createthread.c:100) ==29406== by 0x4E4BEC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797) ==29406== by 0x4C38A27: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400E19: launch (launch.c:85) ==29406== by 0x4007DD: main (main.c:24) ==29406== ==29406== ---------------------------------------------------------------- ==29406== ==29406== Thread #2: lock order "0x54541F8 before 0x54545B8" violated ==29406== ==29406== Observed (incorrect) order is: acquisition of lock at 0x54545B8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4011BC: eat (exec.c:38) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== followed by a later acquisition of lock at 0x54541F8 ==29406== at 0x4C3603C: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x401226: eat (exec.c:43) ==29406== by 0x401115: philo_exec (exec.c:121) ==29406== by 0x4C38C26: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x4E4B6DA: start_thread (pthread_create.c:463) ==29406== by 0x518471E: clone (clone.S:95) ==29406== ==29406== Lock at 0x54541F8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54541f8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== Lock at 0x54545B8 was first observed ==29406== at 0x4C39F2A: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C75: lst_add_philo (init.c:25) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Address 0x54545b8 is 24 bytes inside a block of size 176 alloc'd ==29406== at 0x4C32F2F: malloc (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so) ==29406== by 0x400C21: lst_add_philo (init.c:19) ==29406== by 0x400B8D: init_chain_philo (init.c:49) ==29406== by 0x4008CD: init (init.c:126) ==29406== by 0x4007B5: main (main.c:21) ==29406== Block was alloc'd by thread #1 ==29406== ==29406== 3 5 has taken a fork 17 5 has taken a fork 18 5 is eating 30 3 has taken a fork 31 3 has taken a fork 32 3 is eating 45 2 has taken a fork 225 5 is sleeping 229 1 has taken a fork 235 3 is sleeping 238 2 has taken a fork 240 2 is eating 241 4 has taken a fork 242 4 has taken a fork 243 4 is eating 429 5 is thinking 438 3 is thinking 442 3 has taken a fork 446 1 has taken a fork 448 1 is eating 448 2 is sleeping 451 5 has taken a fork 453 4 is sleeping 457 3 has taken a fork 458 3 is eating 518 5 died ==29406== ==29406== For counts of detected and suppressed errors, rerun with: -v ==29406== Use --history-level=approx or =none to gain increased speed, at ==29406== the cost of reduced accuracy of conflicting-access information ==29406== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 6156 from 116)