Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

process_info/1 gets stuck and never returns #7801

Closed
nickva opened this issue Oct 28, 2023 · 22 comments
Closed

process_info/1 gets stuck and never returns #7801

nickva opened this issue Oct 28, 2023 · 22 comments
Assignees
Labels
bug Issue is reported as a bug team:VM Assigned to OTP team VM

Comments

@nickva
Copy link
Contributor

nickva commented Oct 28, 2023

Describe the bug

In Apache CouchDB we have a metrics gathering module. It gets the message queue lengths and dicts from processes. After upgrading from 24.3.4.13 to 25.3.2.7 that metrics gathering module started to get stuck when calling process_info on some processes. This happens randomly once every one or two days. We haven't noticed it happen previously on 24.3.4.13 and earlier Erlang versions.

When this condition happens, the node is up and it's possible to remsh into it. Getting process_info/1 for other processes seems to work well. On the stuck process, even calling exit(Pid, kill) has no effect.

Some examples of calls which get stuck:

> erlang:is_process_alive(<0.32140.3880>).
...stuck...

1> erlang:process_info(<0.32140.3880>).
...stuck...

> erlang:garbage_collect(<0.32140.3880>).
...stuck...

> exit(<0.32140.3880>, kill).
true
> erlang:process_info(<0.32140.3880>).
...stuck...

Trying to find other ways to get more details, I gave erts_debug a try. Surprisingly, after calling erts_debug:get_internal_state({link_list, <0.18841.4434>}) it unblocked the stuck process_info/1 call in another terminal(!).

In other words, one remsh instance had the prompt hung on erlang:process_info(<0.32140.3880>).. Launching a separate remsh prompt and running erts_debug:set_internal_state(available_internal_state, true), erts_debug:get_internal_state({link_list, <0.18841.4434>}), made the process_info/1 in the first terminal return a result.

The "stuck" process is a gen_server in CouchDB which performs file IO.

process_info(<0.18841.4434>).
[{current_function,{prim_file,pread_nif,3}},
 {initial_call,{proc_lib,init_p,5}},
 {status,runnable},
 {message_queue_len,21},
 {links,[<0.9553.4367>]},
 {dictionary,[{read_timestamp,{1698,452486,536132}},
              {'$ancestors',[<0.9553.4367>,<0.4903.4453>]},
              {'$initial_call',{couch_file,init,1}},
              {couch_file_fd,{{file_descriptor,prim_file,
                                               #{handle => #Ref<0.3776999654.3448635605.69651>,
                                                 owner => <0.18841.4434>,r_ahead_size => 0,
                                                 r_buffer => #Ref<0.3776999654.3589144583.67059>}},
                              "xxxx-redacted-file-path-xxxx.couch"}}]},
 {trap_exit,false},
 {error_handler,error_handler},
 {priority,normal},
 {group_leader,<0.336.0>},
 {total_heap_size,2000},
 {heap_size,987},
 {stack_size,31},
 {reductions,4480},
 {garbage_collection,[{max_heap_size,#{error_logger => true,kill => true,size => 0}},
                      {min_bin_vheap_size,46422},
                      {min_heap_size,233},
                      {fullsweep_after,65535},
                      {minor_gcs,10}]},
 {suspending,[]}]

It seems to get stuck in the pread file IO call.

After it returns a result, another call to process_info/1 would be stuck again until get_internal_state/1 makes it "unstuck" and return a result, and so on.

To Reproduce

So far there is no way to easily reproduce the issue. It happens in production on a particular cluster every one or two days.

Expected behavior

process_info/1 and exit(Pid, kill) would function as designed.

Affected versions

So far noticed it happens on 25.3.2.7. That's the first OTP 25 version we tried in production. The issue doesn't seem to happen on 24.3.4.13 (note: that's also not the latest 24 version currently; the latest is 24.3.4.14.

Additional context

I was able to attach gdb and inspect more of the process state via someetp-commands.

(gdb) etp-process-info-x (Process*)0x7fcf70ed8650
  Pid: <0.18841.4434>
  State: dirty-io-proc | active-sys | sig-in-q | active | prq-prio-normal | usr-prio-normal | act-prio-normal

  Flags:
  Current function: prim_file:pread_nif/3
  I: #Cp<0x7fcfbf1e12d8>
  Heap size: 987
  Old-heap size: 987
  Mbuf size: 0
  Msgq len: 21 (inner=21, outer=0)
  Parent: <0.9553.4367>
  Pointer: (Process*)0x7fcf70ed8650
  Msgq Flags: on-heap
  --- Inner signal queue (message queue) ---
    [{'$gen_call',{<0.1602.4351>,#Ref<0.3776999655.2738094081.56969>},{pread_iolist,4565}} @from= <0.1602.4351>, % <== SAVE
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3965452292.72138>},{pread_iolist,33296}} @from= <0.250.0>,
     {'$gen_call',{<0.20064.4340>,#Ref<0.3776999654.3506962440.225591>},{pread_iolist,4565}} @from= <0.20064.4340>,
     {'$gen_call',{<0.25540.4366>,#Ref<0.3776999654.3589013511.70308>},{pread_iolist,12584}} @from= <0.25540.4366>,
     {'$gen_call',{<0.21663.4363>,#Ref<0.3776999654.3589013511.70312>},{pread_iolist,12584}} @from= <0.21663.4363>,
     {'$gen_call',{<0.27139.4373>,#Ref<0.3776999654.3965452292.72165>},{pread_iolist,12584}} @from= <0.27139.4373>,
     {'$gen_call',{<0.13898.4367>,#Ref<0.3776999655.850395139.93542>},{pread_iolist,12584}} @from= <0.13898.4367>,
     {'$gen_call',{<0.20820.4362>,#Ref<0.3776999654.3506962440.225615>},{pread_iolist,12584}} @from= <0.20820.4362>,
     {'$gen_call',{<0.12063.4451>,#Ref<0.3776999655.2738094081.56987>},{pread_iolist,12584}} @from= <0.12063.4451>,
     {'$gen_call',{<0.4178.4369>,#Ref<0.3776999654.3965452292.72174>},{pread_iolist,12584}} @from= <0.4178.4369>,
     {'$gen_call',{<0.32200.4392>,#Ref<0.3776999654.3589013511.70317>},{pread_iolist,12584}} @from= <0.32200.4392>,
     {'$gen_call',{<0.23383.4395>,#Ref<0.3776999654.3817340933.71206>},{pread_iolist,12584}} @from= <0.23383.4395>,
     {'$gen_call',{<0.5786.4385>,#Ref<0.3776999654.3817340933.71210>},{pread_iolist,12584}} @from= <0.5786.4385>,
     {'$gen_call',{<0.13193.4425>,#Ref<0.3776999655.2738094081.56995>},{pread_iolist,12584}} @from= <0.13193.4425>,
     {'$gen_call',{<0.15665.4373>,#Ref<0.3776999655.2738094081.56999>},{pread_iolist,12584}} @from= <0.15665.4373>,
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3506962440.225661>},{pread_iolist,33296}} @from= <0.250.0>,
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3713531910.195084>},{pread_iolist,33296}} @from= <0.250.0>,
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3589013511.70383>},{pread_iolist,33296}} @from= <0.250.0>,
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3965452292.72280>},{pread_iolist,33296}} @from= <0.250.0>,
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3506962440.225734>},{pread_iolist,33296}} @from= <0.250.0>,
     maybe_close @token= undefined @from= clock_service]

    Message signals: 21
    Non-message signals: 0

  --- Middle signal queue ---
    []

    Message signals: 0
    Non-message signals: 0

  --- Outer queue ---
    [->OFFSET_MARKER,
     !PROCESS-INFO[0],
     !PROCESS-INFO[0],
     !PROCESS-INFO[0],
     !PROCESS-INFO[0]]

    Message signals: 0
    Non-message signals: 5

  --- Link
    Type: Port
    Other: <0.9553.4367>
    Flags: ORIGIN IN_TABLE
    Pointer: (ErtsLink*)0x7fcffc0c60c0
  --- Monitor
    Type: Proc
    Other: <0.9553.4367>
    Flags: ORIGIN IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf64164d60
  --- Monitor
    Type: Node
    Other: #Cp<0x7fcf628a3258>
    Flags: TARGET IN_TABLE EXTENDED
    Pointer: (ErtsMonitorData*)0x7fcfb903c7a8
  --- Monitor
    Type: Proc
    Other: <0.233.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe40bb518
  --- Monitor
    Type: Proc
    Other: <0.9553.4367>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe6e9b3a8
  --- Monitor
    Type: Proc
    Other: <0.6491.4369>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcff14c85a0
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf706a72b8
  --- Monitor
    Type: Proc
    Other: <0.2117.4397>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf6429fe80
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf5f7c5940
  --- Monitor
    Type: Proc
    Other: <0.17403.4411>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf645dc210
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf7f0c6f70
  --- Monitor
    Type: Proc
    Other: <0.19455.4391>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf709f2f50
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe0303000
  --- Monitor
    Type: Proc
    Other: <0.14701.4415>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe410c600
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf706ac7b8
  --- Monitor
    Type: Proc
    Other: <0.19991.4375>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe40a4588
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf5fdd83e0

I tried a few more process info getting stuck calls and erts_debug get_link to get them unstuck then dumped the core (I have it available for further investigation).

Using the core file later the same process info looks a bit different:

(gdb) etp-process-info-x (Process*)0x7fcf70ed8650
  Pid: <0.18841.4434>
  State: dirty-io-proc | active-sys | sig-in-q | active | maybe-self-sigs | prq-prio-normal | usr-prio-normal | act-prio-normal

  Flags:
  Current function: prim_file:pread_nif/3
  I: #Cp<0x7fcfbf1e12d8>
  Heap size: 987
  Old-heap size: 987
  Mbuf size: 0
  Msgq len: 21 (inner=2, outer=19)
  Parent: <0.9553.4367>
  Pointer: (Process*)0x7fcf70ed8650
  Msgq Flags: on-heap
  --- Inner signal queue (message queue) ---
    [{'$gen_call',{<0.1602.4351>,#Ref<0.3776999655.2738094081.56969>},{pread_iolist,4565}} @from= <0.1602.4351>, % <== SAVE
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3965452292.72138>},{pread_iolist,33296}} @from= <0.250.0>]

    Message signals: 2
    Non-message signals: 0

  --- Middle signal queue ---
    []

    Message signals: 0
    Non-message signals: 0

  --- Outer queue ---
    [->OFFSET_MARKER,
     !MONITOR[0],
     {'$gen_call',{<0.20064.4340>,#Ref<0.3776999654.3506962440.225591>},{pread_iolist,4565}} @from= <0.20064.4340>,
     !DEMONITOR[0],
     !MONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.25540.4366>,#Ref<0.3776999654.3589013511.70308>},{pread_iolist,12584}} @from= <0.25540.4366>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.21663.4363>,#Ref<0.3776999654.3589013511.70312>},{pread_iolist,12584}} @from= <0.21663.4363>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.27139.4373>,#Ref<0.3776999654.3965452292.72165>},{pread_iolist,12584}} @from= <0.27139.4373>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.13898.4367>,#Ref<0.3776999655.850395139.93542>},{pread_iolist,12584}} @from= <0.13898.4367>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.20820.4362>,#Ref<0.3776999654.3506962440.225615>},{pread_iolist,12584}} @from= <0.20820.4362>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.12063.4451>,#Ref<0.3776999655.2738094081.56987>},{pread_iolist,12584}} @from= <0.12063.4451>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.4178.4369>,#Ref<0.3776999654.3965452292.72174>},{pread_iolist,12584}} @from= <0.4178.4369>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.32200.4392>,#Ref<0.3776999654.3589013511.70317>},{pread_iolist,12584}} @from= <0.32200.4392>,
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.23383.4395>,#Ref<0.3776999654.3817340933.71206>},{pread_iolist,12584}} @from= <0.23383.4395>,
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.5786.4385>,#Ref<0.3776999654.3817340933.71210>},{pread_iolist,12584}} @from= <0.5786.4385>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.13193.4425>,#Ref<0.3776999655.2738094081.56995>},{pread_iolist,12584}} @from= <0.13193.4425>,
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.15665.4373>,#Ref<0.3776999655.2738094081.56999>},{pread_iolist,12584}} @from= <0.15665.4373>,
     !MONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3506962440.225661>},{pread_iolist,33296}} @from= <0.250.0>,
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3713531910.195084>},{pread_iolist,33296}} @from= <0.250.0>,
     !MONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3589013511.70383>},{pread_iolist,33296}} @from= <0.250.0>,
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3965452292.72280>},{pread_iolist,33296}} @from= <0.250.0>,
     !MONITOR[0],
     !DEMONITOR[0],
     !DEMONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     !MONITOR[0],
     {'$gen_call',{<0.250.0>,#Ref<0.3776999654.3506962440.225734>},{pread_iolist,33296}} @from= <0.250.0>,
     !DEMONITOR[0],
     !DEMONITOR[0],
     !PROCESS-INFO[0],
     !PROCESS-INFO[0],
     !PROCESS-INFO[0],
     maybe_close @token= undefined @from= clock_service,
     !PROCESS-INFO[0],
     !PROCESS-INFO[0]]

    Message signals: 19
    Non-message signals: 96

  --- Link
    Type: Port
    Other: <0.9553.4367>
    Flags: ORIGIN IN_TABLE
    Pointer: (ErtsLink*)0x7fcffc0c60c0
  --- Monitor
    Type: Proc
    Other: <0.9553.4367>
    Flags: ORIGIN IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf64164d60
  --- Monitor
    Type: Node
    Other: #Cp<0x7fcf628a3258>
    Flags: TARGET IN_TABLE EXTENDED
    Pointer: (ErtsMonitorData*)0x7fcfb903c7a8
  --- Monitor
    Type: Proc
    Other: <0.233.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe40bb518
  --- Monitor
    Type: Proc
    Other: <0.9553.4367>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe6e9b3a8
  --- Monitor
    Type: Proc
    Other: <0.8928.4369>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf709f21c0
  --- Monitor
    Type: Proc
    Other: <0.10900.4363>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfe410c9b8
  --- Monitor
    Type: Proc
    Other: <0.8928.4369>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf709f2db8
  --- Monitor
    Type: Proc
    Other: <0.3017.4418>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf642c7880
  --- Monitor
    Type: Proc
    Other: <0.1602.4351>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcfc90f6610
  --- Monitor
    Type: Proc
    Other: <0.6491.4369>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcff14c85a0
  --- Monitor
    Type: Proc
    Other: <0.20064.4340>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf5ff2ca30
  --- Monitor
    Type: Proc
    Other: <0.3017.4418>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf706a5a18
  --- Monitor
    Type: Proc
    Other: <0.1602.4351>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf709f2d30
  --- Monitor
    Type: Proc
    Other: <0.250.0>
    Flags: TARGET IN_TABLE
    Pointer: (ErtsMonitorData*)0x7fcf706a72b8

The process struct:

(gdb) print *(Process*)0x7fcf70ed8650
$2 = {
  common = {id = 2899191149140371, refc = {atmc = {counter = 1}, sint = 1}, tracer = 59, trace_flags = 0, timer = {counter = 0}, u = {alive = {started_interval = 3024267, reg = 0x0, links = 0x7fcffc0c60c0, lt_monitors = 0x7fcfb903c7d0, monitors = 0x7fcf64164d60}, release = {later = 3024267, func = 0x0, data = 0x7fcffc0c60c0, next = 0x7fcfb903c7d0}}},

 htop = 0x7fcf1e8b0580, stop = 0x7fcf1e8b1610, frame_pointer = 0x0, fcalls = 0, freason = 1024, fvalue = 59, heap = 0x7fcf1e8af830, hend = 0x7fcf1e8b1708, abandoned_heap = 0x0, heap_sz = 987, min_heap_size = 233, min_vheap_size = 46422, max_heap_size = 3, arity = 3, arg_reg = 0x7fcf70ed8720, max_arg_reg = 6, def_arg_reg = {140527625828450, 73119, 8063, 140547875088576, 1913, 3999}, i = 0x7fcfbf1e12d8, catches = 4, rcount = 0, schedule_count = 0, reds = 4480, flags = 0, group_leader = 11544872097027, ftrace = 59, next = 0x0, uniq = 0,

 sig_qs = {first = 0x7fcfbf0f4bb8, last = 0x7fcf644c4f18, save = 0x7fcf70ed8798, cont = 0x0, cont_last = 0x7fcf70ed87b0, nmsigs = {next = 0x0, last = 0x0}, recv_mrk_blk = 0x0, len = 2, flags = 2},

 bif_timers = 0x0, dictionary = 0x7fcff53417b0, seq_trace_clock = 0, seq_trace_lastcnt = 0, seq_trace_token = 59,

 u = {real_proc = 0x3104b, terminate = 0x3104b, initial = {module = 200779, function = 279435, arity = 5}},

 current = 0x7fd3d77950a0, parent = 3705953475777811, static_flags = 0, high_water = 0x7fcf1e8af948, old_hend = 0x7fcf23381098, old_htop = 0x7fcf2337f8e0, old_heap = 0x7fcf2337f1c0, gen_gcs = 10, max_gen_gcs = 65535, off_heap = {first = 0x7fcf1e8afd68, overhead = 62}, wrt_bins = 0x0, mbuf = 0x0, live_hf_end = 0xfffffffffffffff8, msg_frag = 0x0, mbuf_sz = 0, psd = {counter = 140531150663448}, bin_vheap_sz = 46422, bin_old_vheap_sz = 46422, bin_old_vheap = 33, sys_task_qs = 0x0, dirty_sys_tasks = 0x0, state = {counter = 135802922}, xstate = {counter = 0}, sig_inq_contention_counter = 0,

 sig_inq = {first = 0x55557e8903b8, last = 0x55557e8841c0, len = 19, nmsigs = {next = 0x55557e8903b8, last = 0x55557e890440}},

 sig_inq_buffers = {counter = 0}, trace_msg_q = 0x0,

 lock = {flags = {counter = 0}, queue = {0x0, 0x0, 0x0, 0x0, 0x0}},

 scheduler_data = 0x0, run_queue = {counter = 140547875085888}
}
@nickva nickva added the bug Issue is reported as a bug label Oct 28, 2023
@okeuday
Copy link
Contributor

okeuday commented Oct 28, 2023

@nickva I have seen similar problems when running Erlang/OTP on Linux, when the Linux scheduler is not set to either (multiqueue) "none" with Linux ≥ 5.0 or (non-multiqueue) "noop". Are you using Linux with a different scheduler (like Linux ≥ 5.0 with "mq-deadline" or "bfq")? If you are, it would be best to retest with the "none" or "noop" scheduler before considering it an Erlang/OTP problem.

@jhogberg jhogberg added the team:VM Assigned to OTP team VM label Oct 28, 2023
@nickva
Copy link
Contributor Author

nickva commented Oct 28, 2023

@okeuday that's interesting. Thanks for the tip to check. I checked the cluster and our IO schedulers are set to none currently. In general, I would think even mq-deadline shouldn't necessarily lead to a Erlang/OTP process blocking and being unable to be queried with process_info/1 or killed with exit(Pid, kill).

@rickard-green
Copy link
Contributor

Do you still have the core files? If so, what does etp-schedulers print?

@rickard-green rickard-green self-assigned this Oct 30, 2023
@nickva
Copy link
Contributor Author

nickva commented Oct 30, 2023

Thanks for taking a look, Rickard. Here is the output of etp-schedulers

(gdb) etp-schedulers
--- Scheduler 1 ---
 IX: 0
 CPU Binding: unbound
 Aux work Flags: delayed-dealloc-thr-prgr
 Sleep Info Flags:
 Pointer: (ErtsSchedulerData*)0x7fd3da2d5540
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work halftime-out-of-work non-empty exec
  Pointer: (ErtsRunQueue*)0x7fd3da2b1740
--- Scheduler 2 ---
 IX: 1
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags:
 Pointer: (ErtsSchedulerData*)0x7fd3da2df840
 - Run Queue -
  Length: total=1, max=0, high=0, normal=1, low=0, port=0
  Misc Jobs: no
  Queue Mask: normal
  Misc Flags: out-of-work halftime-out-of-work non-empty protected exec
  Pointer: (ErtsRunQueue*)0x7fd3da2b1900
--- Scheduler 3 ---
 IX: 2
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping poll waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da2e9b40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b1ac0
--- Scheduler 4 ---
 IX: 3
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da2f3e40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b1c80
--- Scheduler 5 ---
 IX: 4
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da2fe140
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b1e40
--- Scheduler 6 ---
 IX: 5
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da308440
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2000
--- Scheduler 7 ---
 IX: 6
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da312740
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b21c0
--- Scheduler 8 ---
 IX: 7
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da31ca40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2380
--- Scheduler 9 ---
 IX: 8
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da326d40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2540
--- Scheduler 10 ---
 IX: 9
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da331040
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2700
--- Scheduler 11 ---
 IX: 10
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da33b340
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b28c0
--- Scheduler 12 ---
 IX: 11
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da345640
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2a80
--- Scheduler 13 ---
 IX: 12
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da34f940
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2c40
--- Scheduler 14 ---
 IX: 13
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da359c40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2e00
--- Scheduler 15 ---
 IX: 14
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da363f40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b2fc0
--- Scheduler 16 ---
 IX: 15
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da36e240
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3180
--- Scheduler 17 ---
 IX: 16
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da378540
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3340
--- Scheduler 18 ---
 IX: 17
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da382840
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3500
--- Scheduler 19 ---
 IX: 18
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da38cb40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b36c0
--- Scheduler 20 ---
 IX: 19
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da396e40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3880
--- Scheduler 21 ---
 IX: 20
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3a1140
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3a40
--- Scheduler 22 ---
 IX: 21
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3ab440
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3c00
--- Scheduler 23 ---
 IX: 22
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3b5740
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3dc0
--- Scheduler 24 ---
 IX: 23
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3bfa40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b3f80
--- Scheduler 25 ---
 IX: 24
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3c9d40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4140
--- Scheduler 26 ---
 IX: 25
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3d4040
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4300
--- Scheduler 27 ---
 IX: 26
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3de340
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b44c0
--- Scheduler 28 ---
 IX: 27
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3e8640
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4680
--- Scheduler 29 ---
 IX: 28
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3f2940
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4840
--- Scheduler 30 ---
 IX: 29
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da3fcc40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4a00
--- Scheduler 31 ---
 IX: 30
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da406f40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4bc0
--- Scheduler 32 ---
 IX: 31
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da411240
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4d80
--- Scheduler 33 ---
 IX: 32
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da41b540
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b4f40
--- Scheduler 34 ---
 IX: 33
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da425840
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5100
--- Scheduler 35 ---
 IX: 34
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da42fb40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b52c0
--- Scheduler 36 ---
 IX: 35
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da439e40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5480
--- Scheduler 37 ---
 IX: 36
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da444140
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5640
--- Scheduler 38 ---
 IX: 37
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da44e440
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5800
--- Scheduler 39 ---
 IX: 38
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da458740
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b59c0
--- Scheduler 40 ---
 IX: 39
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da462a40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5b80
--- Scheduler 41 ---
 IX: 40
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da46cd40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5d40
--- Scheduler 42 ---
 IX: 41
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da477040
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b5f00
--- Scheduler 43 ---
 IX: 42
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da481340
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b60c0
--- Scheduler 44 ---
 IX: 43
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da48b640
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6280
--- Scheduler 45 ---
 IX: 44
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da495940
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6440
--- Scheduler 46 ---
 IX: 45
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da49fc40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6600
--- Scheduler 47 ---
 IX: 46
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4a9f40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b67c0
--- Scheduler 48 ---
 IX: 47
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4b4240
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6980
--- Scheduler 49 ---
 IX: 48
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4be540
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6b40
--- Scheduler 50 ---
 IX: 49
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4c8840
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6d00
--- Scheduler 51 ---
 IX: 50
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4d2b40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b6ec0
--- Scheduler 52 ---
 IX: 51
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4dce40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7080
--- Scheduler 53 ---
 IX: 52
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4e7140
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7240
--- Scheduler 54 ---
 IX: 53
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4f1440
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7400
--- Scheduler 55 ---
 IX: 54
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da4fb740
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b75c0
--- Scheduler 56 ---
 IX: 55
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da505a40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7780
--- Scheduler 57 ---
 IX: 56
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da50fd40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7940
--- Scheduler 58 ---
 IX: 57
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da51a040
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7b00
--- Scheduler 59 ---
 IX: 58
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da524340
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7cc0
--- Scheduler 60 ---
 IX: 59
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da52e640
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b7e80
--- Scheduler 61 ---
 IX: 60
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da538940
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8040
--- Scheduler 62 ---
 IX: 61
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da542c40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8200
--- Scheduler 63 ---
 IX: 62
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da54cf40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b83c0
--- Scheduler 64 ---
 IX: 63
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da557240
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8580
--- Scheduler 65 ---
 IX: 64
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da561540
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8740
--- Scheduler 66 ---
 IX: 65
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da56b840
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8900
--- Scheduler 67 ---
 IX: 66
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da575b40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8ac0
--- Scheduler 68 ---
 IX: 67
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da57fe40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8c80
--- Scheduler 69 ---
 IX: 68
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da58a140
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b8e40
--- Scheduler 70 ---
 IX: 69
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da594440
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9000
--- Scheduler 71 ---
 IX: 70
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da59e740
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b91c0
--- Scheduler 72 ---
 IX: 71
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5a8a40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9380
--- Scheduler 73 ---
 IX: 72
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5b2d40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9540
--- Scheduler 74 ---
 IX: 73
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5bd040
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9700
--- Scheduler 75 ---
 IX: 74
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5c7340
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b98c0
--- Scheduler 76 ---
 IX: 75
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5d1640
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9a80
--- Scheduler 77 ---
 IX: 76
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5db940
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9c40
--- Scheduler 78 ---
 IX: 77
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5e5c40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9e00
--- Scheduler 79 ---
 IX: 78
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5eff40
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2b9fc0
--- Scheduler 80 ---
 IX: 79
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3da5fa240
 - Run Queue -
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work inactive
  Pointer: (ErtsRunQueue*)0x7fd3da2ba180
---------------------


--- Dirty CPU Scheduler 1 ---
 IX: 0
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8e9c1c0
--- Dirty CPU Scheduler 2 ---
 IX: 1
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ea64c0
--- Dirty CPU Scheduler 3 ---
 IX: 2
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8eb07c0
--- Dirty CPU Scheduler 4 ---
 IX: 3
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ebaac0
--- Dirty CPU Scheduler 5 ---
 IX: 4
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ec4dc0
--- Dirty CPU Scheduler 6 ---
 IX: 5
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ecf0c0
--- Dirty CPU Scheduler 7 ---
 IX: 6
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ed93c0
--- Dirty CPU Scheduler 8 ---
 IX: 7
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ee36c0
--- Dirty CPU Scheduler 9 ---
 IX: 8
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8eed9c0
--- Dirty CPU Scheduler 10 ---
 IX: 9
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ef7cc0
--- Dirty CPU Scheduler 11 ---
 IX: 10
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f01fc0
--- Dirty CPU Scheduler 12 ---
 IX: 11
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f0c2c0
--- Dirty CPU Scheduler 13 ---
 IX: 12
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f165c0
--- Dirty CPU Scheduler 14 ---
 IX: 13
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f208c0
--- Dirty CPU Scheduler 15 ---
 IX: 14
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f2abc0
--- Dirty CPU Scheduler 16 ---
 IX: 15
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f34ec0
--- Dirty CPU Scheduler 17 ---
 IX: 16
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f3f1c0
--- Dirty CPU Scheduler 18 ---
 IX: 17
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f494c0
--- Dirty CPU Scheduler 19 ---
 IX: 18
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f537c0
--- Dirty CPU Scheduler 20 ---
 IX: 19
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f5dac0
--- Dirty CPU Scheduler 21 ---
 IX: 20
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f67dc0
--- Dirty CPU Scheduler 22 ---
 IX: 21
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f720c0
--- Dirty CPU Scheduler 23 ---
 IX: 22
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f7c3c0
--- Dirty CPU Scheduler 24 ---
 IX: 23
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f866c0
--- Dirty CPU Scheduler 25 ---
 IX: 24
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f909c0
--- Dirty CPU Scheduler 26 ---
 IX: 25
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8f9acc0
--- Dirty CPU Scheduler 27 ---
 IX: 26
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fa4fc0
--- Dirty CPU Scheduler 28 ---
 IX: 27
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8faf2c0
--- Dirty CPU Scheduler 29 ---
 IX: 28
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fb95c0
--- Dirty CPU Scheduler 30 ---
 IX: 29
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fc38c0
--- Dirty CPU Scheduler 31 ---
 IX: 30
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fcdbc0
--- Dirty CPU Scheduler 32 ---
 IX: 31
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fd7ec0
--- Dirty CPU Scheduler 33 ---
 IX: 32
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fe21c0
--- Dirty CPU Scheduler 34 ---
 IX: 33
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8fec4c0
--- Dirty CPU Scheduler 35 ---
 IX: 34
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d8ff67c0
--- Dirty CPU Scheduler 36 ---
 IX: 35
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9000ac0
--- Dirty CPU Scheduler 37 ---
 IX: 36
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d900adc0
--- Dirty CPU Scheduler 38 ---
 IX: 37
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90150c0
--- Dirty CPU Scheduler 39 ---
 IX: 38
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d901f3c0
--- Dirty CPU Scheduler 40 ---
 IX: 39
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90296c0
--- Dirty CPU Scheduler 41 ---
 IX: 40
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90339c0
--- Dirty CPU Scheduler 42 ---
 IX: 41
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d903dcc0
--- Dirty CPU Scheduler 43 ---
 IX: 42
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9047fc0
--- Dirty CPU Scheduler 44 ---
 IX: 43
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90522c0
--- Dirty CPU Scheduler 45 ---
 IX: 44
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d905c5c0
--- Dirty CPU Scheduler 46 ---
 IX: 45
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90668c0
--- Dirty CPU Scheduler 47 ---
 IX: 46
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9070bc0
--- Dirty CPU Scheduler 48 ---
 IX: 47
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d907aec0
--- Dirty CPU Scheduler 49 ---
 IX: 48
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90851c0
--- Dirty CPU Scheduler 50 ---
 IX: 49
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d908f4c0
--- Dirty CPU Scheduler 51 ---
 IX: 50
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90997c0
--- Dirty CPU Scheduler 52 ---
 IX: 51
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90a3ac0
--- Dirty CPU Scheduler 53 ---
 IX: 52
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90addc0
--- Dirty CPU Scheduler 54 ---
 IX: 53
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90b80c0
--- Dirty CPU Scheduler 55 ---
 IX: 54
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90c23c0
--- Dirty CPU Scheduler 56 ---
 IX: 55
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90cc6c0
--- Dirty CPU Scheduler 57 ---
 IX: 56
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90d69c0
--- Dirty CPU Scheduler 58 ---
 IX: 57
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90e0cc0
--- Dirty CPU Scheduler 59 ---
 IX: 58
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90eafc0
--- Dirty CPU Scheduler 60 ---
 IX: 59
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90f52c0
--- Dirty CPU Scheduler 61 ---
 IX: 60
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d90ff5c0
--- Dirty CPU Scheduler 62 ---
 IX: 61
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91098c0
--- Dirty CPU Scheduler 63 ---
 IX: 62
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9113bc0
--- Dirty CPU Scheduler 64 ---
 IX: 63
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d911dec0
--- Dirty CPU Scheduler 65 ---
 IX: 64
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91281c0
--- Dirty CPU Scheduler 66 ---
 IX: 65
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91324c0
--- Dirty CPU Scheduler 67 ---
 IX: 66
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d913c7c0
--- Dirty CPU Scheduler 68 ---
 IX: 67
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9146ac0
--- Dirty CPU Scheduler 69 ---
 IX: 68
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9150dc0
--- Dirty CPU Scheduler 70 ---
 IX: 69
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d915b0c0
--- Dirty CPU Scheduler 71 ---
 IX: 70
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91653c0
--- Dirty CPU Scheduler 72 ---
 IX: 71
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d916f6c0
--- Dirty CPU Scheduler 73 ---
 IX: 72
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91799c0
--- Dirty CPU Scheduler 74 ---
 IX: 73
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9183cc0
--- Dirty CPU Scheduler 75 ---
 IX: 74
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d918dfc0
--- Dirty CPU Scheduler 76 ---
 IX: 75
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91982c0
--- Dirty CPU Scheduler 77 ---
 IX: 76
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91a25c0
--- Dirty CPU Scheduler 78 ---
 IX: 77
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91ac8c0
--- Dirty CPU Scheduler 79 ---
 IX: 78
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91b6bc0
--- Dirty CPU Scheduler 80 ---
 IX: 79
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91c0ec0

--- Dirty CPU Run Queue ---
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work halftime-out-of-work
  Pointer: (ErtsRunQueue*)0x7fd3da2ba340
---------------------


--- Dirty I/O Scheduler 1 ---
 IX: 0
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91cb1c0
--- Dirty I/O Scheduler 2 ---
 IX: 1
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91d54c0
--- Dirty I/O Scheduler 3 ---
 IX: 2
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91df7c0
--- Dirty I/O Scheduler 4 ---
 IX: 3
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91e9ac0
--- Dirty I/O Scheduler 5 ---
 IX: 4
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91f3dc0
--- Dirty I/O Scheduler 6 ---
 IX: 5
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d91fe0c0
--- Dirty I/O Scheduler 7 ---
 IX: 6
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92083c0
--- Dirty I/O Scheduler 8 ---
 IX: 7
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92126c0
--- Dirty I/O Scheduler 9 ---
 IX: 8
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d921c9c0
--- Dirty I/O Scheduler 10 ---
 IX: 9
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9226cc0
--- Dirty I/O Scheduler 11 ---
 IX: 10
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9230fc0
--- Dirty I/O Scheduler 12 ---
 IX: 11
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d923b2c0
--- Dirty I/O Scheduler 13 ---
 IX: 12
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92455c0
--- Dirty I/O Scheduler 14 ---
 IX: 13
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d924f8c0
--- Dirty I/O Scheduler 15 ---
 IX: 14
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9259bc0
--- Dirty I/O Scheduler 16 ---
 IX: 15
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9263ec0
--- Dirty I/O Scheduler 17 ---
 IX: 16
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d926e1c0
--- Dirty I/O Scheduler 18 ---
 IX: 17
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92784c0
--- Dirty I/O Scheduler 19 ---
 IX: 18
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92827c0
--- Dirty I/O Scheduler 20 ---
 IX: 19
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d928cac0
--- Dirty I/O Scheduler 21 ---
 IX: 20
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9296dc0
--- Dirty I/O Scheduler 22 ---
 IX: 21
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92a10c0
--- Dirty I/O Scheduler 23 ---
 IX: 22
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92ab3c0
--- Dirty I/O Scheduler 24 ---
 IX: 23
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92b56c0
--- Dirty I/O Scheduler 25 ---
 IX: 24
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92bf9c0
--- Dirty I/O Scheduler 26 ---
 IX: 25
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92c9cc0
--- Dirty I/O Scheduler 27 ---
 IX: 26
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92d3fc0
--- Dirty I/O Scheduler 28 ---
 IX: 27
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92de2c0
--- Dirty I/O Scheduler 29 ---
 IX: 28
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92e85c0
--- Dirty I/O Scheduler 30 ---
 IX: 29
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92f28c0
--- Dirty I/O Scheduler 31 ---
 IX: 30
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d92fcbc0
--- Dirty I/O Scheduler 32 ---
 IX: 31
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9306ec0
--- Dirty I/O Scheduler 33 ---
 IX: 32
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93111c0
--- Dirty I/O Scheduler 34 ---
 IX: 33
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d931b4c0
--- Dirty I/O Scheduler 35 ---
 IX: 34
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93257c0
--- Dirty I/O Scheduler 36 ---
 IX: 35
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d932fac0
--- Dirty I/O Scheduler 37 ---
 IX: 36
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9339dc0
--- Dirty I/O Scheduler 38 ---
 IX: 37
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93440c0
--- Dirty I/O Scheduler 39 ---
 IX: 38
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d934e3c0
--- Dirty I/O Scheduler 40 ---
 IX: 39
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93586c0
--- Dirty I/O Scheduler 41 ---
 IX: 40
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93629c0
--- Dirty I/O Scheduler 42 ---
 IX: 41
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d936ccc0
--- Dirty I/O Scheduler 43 ---
 IX: 42
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9376fc0
--- Dirty I/O Scheduler 44 ---
 IX: 43
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93812c0
--- Dirty I/O Scheduler 45 ---
 IX: 44
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d938b5c0
--- Dirty I/O Scheduler 46 ---
 IX: 45
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93958c0
--- Dirty I/O Scheduler 47 ---
 IX: 46
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d939fbc0
--- Dirty I/O Scheduler 48 ---
 IX: 47
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93a9ec0
--- Dirty I/O Scheduler 49 ---
 IX: 48
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93b41c0
--- Dirty I/O Scheduler 50 ---
 IX: 49
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93be4c0
--- Dirty I/O Scheduler 51 ---
 IX: 50
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93c87c0
--- Dirty I/O Scheduler 52 ---
 IX: 51
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93d2ac0
--- Dirty I/O Scheduler 53 ---
 IX: 52
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93dcdc0
--- Dirty I/O Scheduler 54 ---
 IX: 53
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93e70c0
--- Dirty I/O Scheduler 55 ---
 IX: 54
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93f13c0
--- Dirty I/O Scheduler 56 ---
 IX: 55
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d93fb6c0
--- Dirty I/O Scheduler 57 ---
 IX: 56
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94059c0
--- Dirty I/O Scheduler 58 ---
 IX: 57
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d940fcc0
--- Dirty I/O Scheduler 59 ---
 IX: 58
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9419fc0
--- Dirty I/O Scheduler 60 ---
 IX: 59
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94242c0
--- Dirty I/O Scheduler 61 ---
 IX: 60
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d942e5c0
--- Dirty I/O Scheduler 62 ---
 IX: 61
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94388c0
--- Dirty I/O Scheduler 63 ---
 IX: 62
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9442bc0
--- Dirty I/O Scheduler 64 ---
 IX: 63
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d944cec0
--- Dirty I/O Scheduler 65 ---
 IX: 64
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94571c0
--- Dirty I/O Scheduler 66 ---
 IX: 65
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94614c0
--- Dirty I/O Scheduler 67 ---
 IX: 66
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d946b7c0
--- Dirty I/O Scheduler 68 ---
 IX: 67
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d9475ac0
--- Dirty I/O Scheduler 69 ---
 IX: 68
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d947fdc0
--- Dirty I/O Scheduler 70 ---
 IX: 69
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d948a0c0
--- Dirty I/O Scheduler 71 ---
 IX: 70
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94943c0
--- Dirty I/O Scheduler 72 ---
 IX: 71
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d949e6c0
--- Dirty I/O Scheduler 73 ---
 IX: 72
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94a89c0
--- Dirty I/O Scheduler 74 ---
 IX: 73
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94b2cc0
--- Dirty I/O Scheduler 75 ---
 IX: 74
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94bcfc0
--- Dirty I/O Scheduler 76 ---
 IX: 75
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94c72c0
--- Dirty I/O Scheduler 77 ---
 IX: 76
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94d15c0
--- Dirty I/O Scheduler 78 ---
 IX: 77
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94db8c0
--- Dirty I/O Scheduler 79 ---
 IX: 78
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94e5bc0
--- Dirty I/O Scheduler 80 ---
 IX: 79
 CPU Binding: unbound
 Aux work Flags:
 Sleep Info Flags: sleeping tse waiting
 Pointer: (ErtsSchedulerData*)0x7fd3d94efec0

--- Dirty I/O Run Queue ---
  Length: total=0, max=0, high=0, normal=0, low=0, port=0
  Misc Jobs: no
  Misc Flags: out-of-work halftime-out-of-work
  Pointer: (ErtsRunQueue*)0x7fd3da2ba500
---------------------

@nickva
Copy link
Contributor Author

nickva commented Oct 31, 2023

I attempted to create a reproducer which I think at least shows the difference between the OTP 24 and 25.

https://gist.github.com/nickva/d784043bee8e28f447bb3e66336712df

It spawns a set of gen_servers which open and hold a raw file handle in their state. Then spawns a number of callers which issue pread requests to those gen_servers. There is a background stats collection loop which queries the process_info on all the processes.

I ran these in parallel on the same test machine with the hardware matching our production clusters. So far I noticed a large difference in stats gathering times when the pread calls block to fetch the data from the disk.

It maybe necessary to run the benchmark once to write the data then stop it, issue a echo 3 > /proc/sys/vm/drop_caches to drop the page cache and then run it again. Here is an example of running after the page caches have been dropped:

OTP 25

process_info:
  => 4113 procs 1195 msec
process_info:
  => 4113 procs 909 msec
<--- page cache dropped here ---
process_info:
  => 4113 procs 46258 msec
process_info:
  => 4113 procs 44292 msec
process_info:

OTP 24

process_info:
  => 4112 procs 30 msec
process_info:
  => 4112 procs 17 msec
process_info:
  => 4112 procs 24 msec
process_info:
  => 4112 procs 17 msec
process_info:
  => 4112 procs 28 msec
process_info:

@rickard-green
Copy link
Contributor

Thanks! I know why this latency occur in OTP 25 and it is quite an easy fix. I'll make a PR later today.

I, however, do not understand how the process (Process*)0x7fcf70ed8650 in your core ended up in the state it is in where it will be blocked forever. Still trying to figure that out. Is it possible to get access to the core file (and corresponding beam.smp)?

@nickva
Copy link
Contributor Author

nickva commented Oct 31, 2023

Is it possible to get access to the core file (and corresponding beam.smp)?

Unfortunately it comes from a production system and may have customer data embedded in it. I'll try to capture a few more of those core files, the issue happens every almost every day or so. If you have a any gdb scripts like etp-... ones I can try running those against the core.

More details about the cluster: that particular cluster has a very spiky workload. It's mostly idle, but periodically, almost every hour, for 10 minutes there is constant 1k to 2k request per second which opens and inspects database and index files.

Screenshot 2023-10-31 at 11 52 43 AM Screenshot 2023-10-31 at 11 56 48 AM

Some details about the application structure in case there is something you might think about that could trigger the behavior:

  • The file IO happens in https://github.com/apache/couchdb/blob/main/src/couch/src/couch_file.erl. A common pattern there might be that 3 requests are performed, but then as soon as 1 or 2 return successfully the rest are canceled by being killed. I can try adding that to the reproducer, perhaps a gen_server timeout or a process which performs the gen_server call but then is killed short before waiting for the response.

  • One thing that's missing from the reproducer module is the periodic querying of process_info(self(), monitored_by) by the gen_server doing the file IO. That's a mechanism to track db handle references. I'll try adding that next to it.

@rickard-green
Copy link
Contributor

I think I understand why the process is getting stuck forever, and will try to provide a fix for it as soon as possible, but I cannot give you an exact date.

I've made a branch rickard/sig-latency (based on OTP 25.3.2.7) in my otp repository fixing the long latency towards processes queued for dirty execution if you want to try it out. I didn't make a separate pull request for this, but will instead include it in the fix for the issue of the process getting stuck forever.

@nickva
Copy link
Contributor Author

nickva commented Nov 1, 2023

I think I understand why the process is getting stuck forever, and will try to provide a fix for it as soon as possible, but I cannot give you an exact date.

That's great news!

I've made a branch rickard/sig-latency (based on OTP 25.3.2.7) in my otp repository fixing the long latency towards processes queued for dirty execution if you want to try it out.

I tried it out and indeed it fixes the latency issue. Now process_info/1,2 is just as fast as it is on OTP 24.

Screenshot 2023-10-31 at 11 53 33 PM

The top is your branch and the bottom is OTP 24, both operations run within 15-30 msec instead of 30-40k msec as before. dstat output shows it's doing some IO work, reading 100MB/sec during that time.

Thank you for the fix, Rickard

@rickard-green
Copy link
Contributor

@nickva I've created a PR #7822 which hopefully should fix these issues. It is based on OTP 25.3.2 plus some other changes in order to make it possible to merge it forward to OTP 26. It merges cleanly to OTP 25.3.2.7, though. Please try it out and come back with info about how it went.

@rickard-green
Copy link
Contributor

@nickva Note that I've only done some basic testing on #7822 , and it needs to be tested in our daily builds for a while before it can be released in a patch.

@nickva
Copy link
Contributor Author

nickva commented Nov 3, 2023

@rickard-green thank you, it's much appreciated.

We'll try to make a test release with the patch and give it a try on the cluster where we see the issue happen most often.

@nickva
Copy link
Contributor Author

nickva commented Nov 6, 2023

I had tried a bit more to create a reproducer for the permanent stuck state, but so far wasn't able to. There is a chance the couch_file (gen_server with the file IO handle) sometimes also is called across a dist channel, so tried that in the reproducer but with no luck. There seems to be is a specific set of timings or feature interactions that make it difficult.

On the positive note, we tested the patch in production on the problematic 6 node cluster for three days, and so far no blockages were detected. Previously between 6 nodes, at least one used to get "stuck" every day and had to be restarted. This hasn't yet happened with your fix, so it looks promising!

@nickva
Copy link
Contributor Author

nickva commented Nov 7, 2023

Probably not related to this issue, but when attempting to reproduce the blocking behavior the reproducer seems to generate a large size binary memory leak across a dist channel. I created a separate issue for it #7834

@nickva
Copy link
Contributor Author

nickva commented Nov 13, 2023

So far the original patch we applied has been running for about 10 days. The good news is that we didn't encounter any cases where the node gets stuck like before, however, there were two unexplained instances where memory usage climbed sharply from about 10GB to 60GB and then node was rebooted by the oomkiller.

This is one of those cases based showing the free/cached/used memory metric:

692a3518-6509-4d12-b9b5-fc84f71067b8

The Erlang uptime metric for all 6 nodes over the 10 day period looks like:

d5439572-1038-4a93-9c8f-078066c162c5

The vertical line on the left is when the patch was applied and the two "dips" in the graph are when the memory issue occurred.

I was wondering if there is anything in the original patch which we applied: maint-25...cloudant:otp:OTP-25.3.2.7-signal-sched-fixes that might cause this behavior. It's almost seem like a deadlock of some sort?

@rickard-green
Copy link
Contributor

@nickva Thanks!

I doubt that #7822 causes these memory issues, but there can of course always be something that one misses. If it is involved, I think it is indirectly involved by changing timing in the system.

You don't think the memory leak you found with the reproducer #7834 could be the cause of this?

It's almost seem like a deadlock of some sort?

How come you say it seems like a deadlock? Have you seen anything not making progress as expected?

@nickva
Copy link
Contributor Author

nickva commented Nov 15, 2023

I doubt that #7822 causes these memory issues, but there can of course always be something that one misses. If it is involved, I think it is indirectly involved by changing timing in the system.

Thanks for confirming! I wasn't sure so thought to share what we found and ask for your opinion.

Good point, that it could be the memory issue from #7834. We were mainly concerned as the behavior seems to be new on cluster, seemingly after we patched beam.smp file. But since it happened only 2 times in 12 days, it may still be a coincidence and it's something unrelated.

How come you say it seems like a deadlock? Have you seen anything not making progress as expected?

It's was mainly a guess based on how sudden the memory increase happened and noticing that distribution couldn't send packets out. So it seems like node should be handling the incoming requests as always but at some point it stops, and memory starts piling up. I got a closer, zoomed in, picture of one of the incidents. The right axis is the used memory (the blue line). The red is the dist send pending count and the green is the derivative (rate) of dist packets sent.

memblowout

dist metrics stop early because those are queried from the VM, so it stopped responding to the metrics poll requests. Eventually, when the OOM killer restarted the node, the blue 60GB line also stops. After reboot, memory went back to normal: in the range of 10GBs or so.

@rickard-green
Copy link
Contributor

Just to be sure, I've gone through all changes again and feel quite confident that the #7822 PR won't cause these issues. At least not directly.

What kind of distribution transport do you use? The our default tcp, our tls, or another implementation?

Could it be outgoing buffers piling up when the distribution isn't able to send? Are you using the async_dist process flag, using huge distribution buffer limits, or potentially have a huge amount of senders?

@nickva
Copy link
Contributor Author

nickva commented Nov 15, 2023

We use the default tcp transport with a buffer (a queue) in front of erlang:send/3 which tries first to send with erlang:send(Dest, Msg, [noconnect, nosuspend]) and if that fails, buffers the message and/or spawns a separate process to send the message default (possibly blocking) connect/suspend options: https://github.com/apache/couchdb/blob/main/src/rexi/src/rexi_buffer.erl#L56-L90.

The buffer (queue) size is 2000 messages, and our dist buffer size is 32MB (+zdbbl32768). We don't use async_dist flag. There could be a large number of concurrent senders. In this particular cluster the traffic is quite bursty: every hour for a few minutes there is a high rate of concurrent requests, then it's mostly quiet. Each external API request usually fans out 3 internal worker requests to 3 other nodes (possibly itself too), and then as soon as one or two responses are received, we kill the remaining one or two workers.

It's probably variation in traffic which may have triggered an unrelated bug or like you mentioned it could be even that same memory leak bug #7834 just manifesting a lot quicker depending on some subtle timing.

Thank you for taking another look, Rickard.

@rickard-green
Copy link
Contributor

This issue has been fixed in OTP 26.2 and OTP 25.2.3.8

@nickva
Copy link
Contributor Author

nickva commented Dec 19, 2023

Thank you, Rickard

@nickva
Copy link
Contributor Author

nickva commented Jan 24, 2024

After deploying the latest OTP 25 everything continued to work well, however the we keep seeing the sudden memory leak issue discussed above. I managed to get a few core dumps when it starts happening, and described it in more details in #8044. I created a new issue as it doesn't seem to be related to this issue. Just mentioning it here since the discussion started here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Issue is reported as a bug team:VM Assigned to OTP team VM
Projects
None yet
Development

No branches or pull requests

4 participants