DISASTER, anon: your multithreaded application has deadlocked!
you probably should've used Erlang, anon. There's no way you're going to fix this in a timely manner.
This is one of them compiled languages. Have fun adding a bunch of print statements just to try and see what's going on.
pic related.
$ gdb -q -p 2971
Attaching to process 2971
[New LWP 2972]
[New LWP 2973]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: Loadable section ".note.gnu.property" outside of ELF segments
futex_wait_cancelable (private=0, expected=0, futex_word=0x13bc3f0)
at ../sysdeps/unix/sysv/linux/futex-internal.h:88
88 int err = lll_futex_timed_wait (futex_word, expected, NULL, private);
(gdb) info functions bob
All functions matching regular expression "bob":
File deadlock.adb:
void <deadlock__bobTK__L_3__B51b__numA>(void);
void <deadlock__bobTK__L_3__B51b__set_numA1>(void);
void <deadlock__bobTK__L_3__B51b__stopA2>(void);
void deadlock.bob(struct {...} * const);
(gdb) break deadlock__bobTK__L_3__B51b__numA.5380
Breakpoint 1 at 0x405728: file deadlock.adb, line 43.
(gdb) continue
Continuing.
[Switching to Thread 0x7f231ef8c700 (LWP 2973)]
Thread 3 "bob" hit Breakpoint 1, <deadlock__bobTK__L_3__B51b__numA> () at deadlock.adb:43
43 accept Num (N : out Natural) do
(gdb) display increment
1: increment = 4
(gdb) set increment := 1
(gdb) continue
Continuing.
Thread 3 "bob" hit Breakpoint 1, <deadlock__bobTK__L_3__B51b__numA> () at deadlock.adb:43
43 accept Num (N : out Natural) do
1: increment = 1
(gdb) info break
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000405728 in <deadlock__bobTK__L_3__B51b__numA>
at deadlock.adb:43
breakpoint already hit 2 times
(gdb) delete 1
(gdb) continue
Continuing.
[Thread 0x7f231ef8c700 (LWP 2973) exited]
[Thread 0x7f231f191700 (LWP 2972) exited]
[Inferior 1 (process 2971) exited normally]
feel free to praise gdb in the context of C, C++, D, Go, Objective-C, OpenCL C, Fortran, Pascal,
Rust, or Modula-2. Or an unsupported language that the 'minimal' pseudolang can manage with.