Crash maybe related to `nif_erlang_dist_ctrl_put_data`

Aperta
#1,883 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
c, erlang

Direzione di ricerca

Start with src/libAtomVM/dist_nifs.c around nif_erlang_dist_ctrl_put_data and follow the backtrace into src/libAtomVM/nifs.c and src/libAtomVM/scheduler.c, especially scheduler_make_ready. Use the linked core dump and the reported test_estdlib.avm crash to investigate the failing lock path. Done when the segmentation fault is reproducibly fixed and the distribution tests pass.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Following crash has been observed here first time: https://github.com/atomvm/AtomVM/actions/runs/18310690206/job/52138386516

coredump is available here:
core-ubuntu-22.04-gcc-11-27-18310690206-1.zip

backtrace:

#0  0x0000563307443688 in smp_spinlock_lock (lock=<optimized out>) at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/smp.h:219
#1  scheduler_make_ready (ctx=ctx@entry=0x7f737802fb30) at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/scheduler.c:352
#2  0x0000563307443fc9 in scheduler_init_ready (c=c@entry=0x7f737802fb30)
    at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/scheduler.c:410
#3  0x0000563307435573 in do_spawn (ctx=ctx@entry=0x7f7374025740, new_ctx=0x7f737802fb30, arity=<optimized out>,
    n_freeze=<optimized out>, opts_term=<optimized out>) at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/nifs.c:1317
#4  0x0000563307435c93 in nif_erlang_spawn_opt (ctx=ctx@entry=0x7f7374025740, argc=argc@entry=4, argv=argv@entry=0x7f737f9fecc0)
    at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/nifs.c:1424
#5  0x0000563307454c0c in nif_erlang_dist_ctrl_put_data (argv=0x7f7374025770, argc=<optimized out>, ctx=0x7f7374025740)
    at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c:611
#6  nif_erlang_dist_ctrl_put_data (ctx=0x7f7374025740, argc=<optimized out>, argv=0x7f7374025770)
    at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c:448
#7  0x00005633073a6a17 in scheduler_entry_point (glb=0x56332ee782a0)
    at /home/runner/work/AtomVM/AtomVM/src/libAtomVM/opcodesswitch.h:2027
#8  0x00005633074615d6 in scheduler_thread_entry_point (arg=<optimized out>)
    at /home/runner/work/AtomVM/AtomVM/src/platforms/generic_unix/lib/smp.c:75
#9  0x00007f737fa94ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442

Last observed messages from test_estdlib.avm:


GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=binary ListenActive=false ConnectActive=false
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=binary ListenActive=false ConnectActive=true
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=binary ListenActive=true ConnectActive=false
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=binary ListenActive=true ConnectActive=true
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=list ListenActive=false ConnectActive=false
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=list ListenActive=false ConnectActive=true
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=list ListenActive=true ConnectActive=false
GEN_TCP-TEST> ServerBackendOption=[{inet_backend,inet}] ClientBackendOption=[{inet_backend,inet}] ListenMode=list ConnectMode=list ListenActive=true ConnectActive=true
CRASH 
======
pid: <0.1931.0>

Stacktrace:
[{socket_dist_controller,recv_data_loop,1,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/socket_dist_controller.erl"},{line,173}]},{socket_dist_controller,handle_info,2,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/socket_dist_controller.erl"},{line,161}]},{gen_server,loop,3,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/gen_server.erl"},{line,551}]}]

cp: #CP<module: 70, label: 51, offset: 27>

x[0]: error
x[1]: {case_clause,{error,closed}}
x[2]: {3,3,138,2,[{4,3156},{70,1118},{70,1554}],error}

Stack 
-----

[]
{state,{<<"">>,#Ref<0.0.5879>},<<"">>,#Ref<0.0.5904>,<<"">>,3,1}
#CP<module: 70, label: 44, offset: 69>
#CP<module: 4, label: 112, offset: 21>
[]
[]
[]
{state,{<<"">>,#Ref<0.0.5879>},<<"">>,#Ref<0.0.5904>,<<"">>,3,1}
[]
{state,undefined,socket_dist_controller,{state,{<<"">>,#Ref<0.0.5879>},<<"">>,#Ref<0.0.5904>,<<"">>,3,1}}
<0.1930.0>
#CP<module: 4, label: 137, offset: 0>


Mailbox
-------


Monitors
--------
link to <0.1932.0>
monitored by resource 0x7f73700072f8 ref=5895
monitored by resource 0x7f73780042b8 ref=5899


**End Of Crash Report**
++dist_util: shutting down connection dist_util:529, data={otp@runnervmafkv5,invalid_challenge}, reason=shutdown
CRASH 
======
pid: <0.1962.0>

Stacktrace:
[{erpc,execute_call,4,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/erpc.erl"},{line,59}]}]

cp: #CP<module: 72, label: 2, offset: 27>

x[0]: exit
x[1]: {#Ref<1666.3375636846.2655256579.102929>,return,"ATOM"}
x[2]: {1,1,57,1,[{72,125}],exit}

Stack 
-----

[]
#Ref<1666.3375636846.2655256579.102929>
[]
#CP<module: 72, label: 12, offset: 0>


Mailbox
-------


Monitors
--------
monitored by resource 0x56332ee9b468 ref=5984


**End Of Crash Report**
CRASH 
======
pid: <0.1959.0>

Stacktrace:
[{socket_dist_controller,recv_data_loop,1,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/socket_dist_controller.erl"},{line,173}]},{socket_dist_controller,handle_info,2,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/socket_dist_controller.erl"},{line,161}]},{gen_server,loop,3,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/gen_server.erl"},{line,551}]}]

cp: #CP<module: 70, label: 51, offset: 27>

x[0]: error
x[1]: {case_clause,{error,closed}}
x[2]: {3,3,138,2,[{4,3156},{70,1118},{70,1554}],error}

Stack 
-----

[]
{state,{<<"">>,#Ref<0.0.5962>},<<"">>,#Ref<0.0.5985>,<<"">>,1,2}
#CP<module: 70, label: 44, offset: 69>
#CP<module: 4, label: 112, offset: 21>
[]
[]
[]
{state,{<<"">>,#Ref<0.0.5962>},<<"">>,#Ref<0.0.5985>,<<"">>,1,2}
[]
{state,undefined,socket_dist_controller,{state,{<<"">>,#Ref<0.0.5962>},<<"">>,#Ref<0.0.5985>,<<"">>,1,2}}
<0.1958.0>
#CP<module: 4, label: 137, offset: 0>


Mailbox
-------


Monitors
--------
link to <0.1960.0>
monitored by resource 0x56332ee9b468 ref=5978
monitored by resource 0x7f737802eb18 ref=5982


**End Of Crash Report**
CRASH 
======
pid: <0.1977.0>

Stacktrace:
[{erpc,execute_call,4,[{file,"/home/runner/work/AtomVM/AtomVM/libs/estdlib/src/erpc.erl"},{line,59}]}]

cp: #CP<module: 72, label: 2, offset: 27>

x[0]: exit
x[1]: {#Ref<1666.456103427.2923954179.64219>,return,"ATOM"}
x[2]: {1,1,57,1,[{72,125}],exit}

Stack 
-----

#Ref<1666.456103427.2923954179.64219>
[]
#CP<module: 72, label: 12, offset: 0>


Mailbox
-------


Monitors
--------
monitored by resource 0x7f7370029548 ref=6030


**End Of Crash Report**
/home/runner/work/_temp/c1c1be6a-d0ae-48dc-b96f-91741858de62.sh: line 3: 17204 Segmentation fault      (core dumped) ./src/AtomVM ./tests/libs/estdlib/test_estdlib.avm
Error: Process completed with exit code 139.

It has been observed also here:
https://github.com/atomvm/AtomVM/actions/runs/18310690206/job/52138386539

Lingua principale
Erlang
Stelle
2.3k
Fork
171
Merge medio
5g 11h
PR unite (30g)
19

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di atomvm/AtomVM

Tutte le issue di atomvm/AtomVM

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.