Skip to content

Segfault in freeaddrinfo, memory leak in getaddrinfo #16081

@tiran

Description

@tiran

In our effort to port CPython to wasm32-emscripten I noticed an unstable test case that crashes sometimes. I was able to reduce the reproducer to socket.gethostbyname(name) in a loop. Upon further investigation with MSan I also found a memory leak in getaddrinfo that might be related to the issue.

Version of emscripten/emsdk:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.1 (1934a98e709b57d3592b8272d3f1264a72c089e4)
clang version 14.0.0 (https://github.com/llvm/llvm-project f142c45f1e494f8dbdcc1bcf14122d128ac8f3fe)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /emsdk/upstream/bin

Failing command line in full:

node --experimental-wasm-threads --experimental-wasm-bulk-memory python.js sock.py

Full link command and output with -v appended:

# emmake make LDFLAGS="-gsource-map -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=1 -v"
Details
/emsdk/upstream/emscripten/emcc  -gsource-map -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=1 -v -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=1   -o python.js Programs/python.o Modules/getbuildinfo.o Parser/token.o  Parser/pegen.o Parser/pegen_errors.o Parser/action_helpers.o Parser/parser.o Parser/string_parser.o Parser/peg_api.o Parser/myreadline.o Parser/tokenizer.o Objects/abstract.o Objects/accu.o Objects/boolobject.o Objects/bytes_methods.o Objects/bytearrayobject.o Objects/bytesobject.o Objects/call.o Objects/capsule.o Objects/cellobject.o Objects/classobject.o Objects/codeobject.o Objects/complexobject.o Objects/descrobject.o Objects/enumobject.o Objects/exceptions.o Objects/genericaliasobject.o Objects/genobject.o Objects/fileobject.o Objects/floatobject.o Objects/frameobject.o Objects/funcobject.o Objects/interpreteridobject.o Objects/iterobject.o Objects/listobject.o Objects/longobject.o Objects/dictobject.o Objects/odictobject.o Objects/memoryobject.o Objects/methodobject.o Objects/moduleobject.o Objects/namespaceobject.o Objects/object.o Objects/obmalloc.o Objects/picklebufobject.o Objects/rangeobject.o Objects/setobject.o Objects/sliceobject.o Objects/structseq.o Objects/tupleobject.o Objects/typeobject.o Objects/unicodeobject.o Objects/unicodectype.o Objects/unionobject.o Objects/weakrefobject.o Python/_warnings.o Python/Python-ast.o Python/Python-tokenize.o Python/asdl.o Python/ast.o Python/ast_opt.o Python/ast_unparse.o Python/bltinmodule.o Python/ceval.o Python/codecs.o Python/compile.o Python/context.o Python/dynamic_annotations.o Python/errors.o Python/frame.o Python/frozenmain.o Python/future.o Python/getargs.o Python/getcompiler.o Python/getcopyright.o Python/getplatform.o Python/getversion.o Python/hamt.o Python/hashtable.o Python/import.o Python/importdl.o Python/initconfig.o Python/marshal.o Python/modsupport.o Python/mysnprintf.o Python/mystrtoul.o Python/pathconfig.o Python/preconfig.o Python/pyarena.o Python/pyctype.o Python/pyfpe.o Python/pyhash.o Python/pylifecycle.o Python/pymath.o Python/pystate.o Python/pythonrun.o Python/pytime.o Python/bootstrap_hash.o Python/specialize.o Python/structmember.o Python/symtable.o Python/sysmodule.o Python/thread.o Python/traceback.o Python/getopt.o Python/pystrcmp.o Python/pystrtod.o Python/pystrhex.o Python/dtoa.o Python/formatter_unicode.o Python/fileutils.o Python/suggestions.o Python/dynload_stub.o    Modules/config.o Modules/main.o Modules/gcmodule.o Modules/arraymodule.o  Modules/_asynciomodule.o  Modules/_bisectmodule.o  Modules/_contextvarsmodule.o  Modules/_csv.o  Modules/_heapqmodule.o  Modules/_json.o  Modules/_lsprof.o Modules/rotatingtree.o  Modules/_opcode.o  Modules/_pickle.o  Modules/_queuemodule.o  Modules/_randommodule.o  Modules/_struct.o  Modules/_typingmodule.o  Modules/_zoneinfo.o  Modules/audioop.o  Modules/mathmodule.o  Modules/cmathmodule.o  Modules/_statisticsmodule.o  Modules/_datetimemodule.o  Modules/_decimal/_decimal.o  Modules/binascii.o  Modules/zlibmodule.o  Modules/md5module.o  Modules/sha1module.o  Modules/sha256module.o  Modules/sha512module.o  Modules/_sha3/sha3module.o  Modules/_blake2/blake2module.o Modules/_blake2/blake2b_impl.o Modules/_blake2/blake2s_impl.o  Modules/pyexpat.o  Modules/_elementtree.o  Modules/cjkcodecs/_codecs_cn.o  Modules/cjkcodecs/_codecs_hk.o  Modules/cjkcodecs/_codecs_iso2022.o  Modules/cjkcodecs/_codecs_jp.o  Modules/cjkcodecs/_codecs_kr.o  Modules/cjkcodecs/_codecs_tw.o  Modules/cjkcodecs/multibytecodec.o  Modules/unicodedata.o  Modules/_cryptmodule.o  Modules/mmapmodule.o  Modules/_posixsubprocess.o  Modules/resource.o  Modules/selectmodule.o  Modules/socketmodule.o  Modules/termios.o  Modules/_multiprocessing/posixshmem.o  Modules/_xxtestfuzz/_xxtestfuzz.o Modules/_xxtestfuzz/fuzzer.o  Modules/_testbuffer.o  Modules/_testinternalcapi.o  Modules/_testcapimodule.o  Modules/atexitmodule.o  Modules/faulthandler.o  Modules/posixmodule.o  Modules/signalmodule.o  Modules/_tracemalloc.o  Modules/_codecsmodule.o  Modules/_collectionsmodule.o  Modules/errnomodule.o  Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o  Modules/itertoolsmodule.o  Modules/_sre.o  Modules/_threadmodule.o  Modules/timemodule.o  Modules/_weakref.o  Modules/_abc.o  Modules/_functoolsmodule.o  Modules/_localemodule.o  Modules/_operator.o  Modules/_stat.o  Modules/symtablemodule.o  Modules/pwdmodule.o  Modules/xxsubtype.o Python/deepfreeze/deepfreeze.o Modules/getpath.o Python/frozen.o -ldl                 -lm -lm -lm -lm -lm -lm Modules/_decimal/libmpdec/libmpdec.a -lz -lz       -lm Modules/expat/libexpat.a                                             -lm 
emcc: warning: USE_PTHREADS + ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271 [-Wpthreads-mem-growth]
 "/emsdk/upstream/bin/wasm-ld" -o python.wasm Programs/python.o Modules/getbuildinfo.o Parser/token.o Parser/pegen.o Parser/pegen_errors.o Parser/action_helpers.o Parser/parser.o Parser/string_parser.o Parser/peg_api.o Parser/myreadline.o Parser/tokenizer.o Objects/abstract.o Objects/accu.o Objects/boolobject.o Objects/bytes_methods.o Objects/bytearrayobject.o Objects/bytesobject.o Objects/call.o Objects/capsule.o Objects/cellobject.o Objects/classobject.o Objects/codeobject.o Objects/complexobject.o Objects/descrobject.o Objects/enumobject.o Objects/exceptions.o Objects/genericaliasobject.o Objects/genobject.o Objects/fileobject.o Objects/floatobject.o Objects/frameobject.o Objects/funcobject.o Objects/interpreteridobject.o Objects/iterobject.o Objects/listobject.o Objects/longobject.o Objects/dictobject.o Objects/odictobject.o Objects/memoryobject.o Objects/methodobject.o Objects/moduleobject.o Objects/namespaceobject.o Objects/object.o Objects/obmalloc.o Objects/picklebufobject.o Objects/rangeobject.o Objects/setobject.o Objects/sliceobject.o Objects/structseq.o Objects/tupleobject.o Objects/typeobject.o Objects/unicodeobject.o Objects/unicodectype.o Objects/unionobject.o Objects/weakrefobject.o Python/_warnings.o Python/Python-ast.o Python/Python-tokenize.o Python/asdl.o Python/ast.o Python/ast_opt.o Python/ast_unparse.o Python/bltinmodule.o Python/ceval.o Python/codecs.o Python/compile.o Python/context.o Python/dynamic_annotations.o Python/errors.o Python/frame.o Python/frozenmain.o Python/future.o Python/getargs.o Python/getcompiler.o Python/getcopyright.o Python/getplatform.o Python/getversion.o Python/hamt.o Python/hashtable.o Python/import.o Python/importdl.o Python/initconfig.o Python/marshal.o Python/modsupport.o Python/mysnprintf.o Python/mystrtoul.o Python/pathconfig.o Python/preconfig.o Python/pyarena.o Python/pyctype.o Python/pyfpe.o Python/pyhash.o Python/pylifecycle.o Python/pymath.o Python/pystate.o Python/pythonrun.o Python/pytime.o Python/bootstrap_hash.o Python/specialize.o Python/structmember.o Python/symtable.o Python/sysmodule.o Python/thread.o Python/traceback.o Python/getopt.o Python/pystrcmp.o Python/pystrtod.o Python/pystrhex.o Python/dtoa.o Python/formatter_unicode.o Python/fileutils.o Python/suggestions.o Python/dynload_stub.o Modules/config.o Modules/main.o Modules/gcmodule.o Modules/arraymodule.o Modules/_asynciomodule.o Modules/_bisectmodule.o Modules/_contextvarsmodule.o Modules/_csv.o Modules/_heapqmodule.o Modules/_json.o Modules/_lsprof.o Modules/rotatingtree.o Modules/_opcode.o Modules/_pickle.o Modules/_queuemodule.o Modules/_randommodule.o Modules/_struct.o Modules/_typingmodule.o Modules/_zoneinfo.o Modules/audioop.o Modules/mathmodule.o Modules/cmathmodule.o Modules/_statisticsmodule.o Modules/_datetimemodule.o Modules/_decimal/_decimal.o Modules/binascii.o Modules/zlibmodule.o Modules/md5module.o Modules/sha1module.o Modules/sha256module.o Modules/sha512module.o Modules/_sha3/sha3module.o Modules/_blake2/blake2module.o Modules/_blake2/blake2b_impl.o Modules/_blake2/blake2s_impl.o Modules/pyexpat.o Modules/_elementtree.o Modules/cjkcodecs/_codecs_cn.o Modules/cjkcodecs/_codecs_hk.o Modules/cjkcodecs/_codecs_iso2022.o Modules/cjkcodecs/_codecs_jp.o Modules/cjkcodecs/_codecs_kr.o Modules/cjkcodecs/_codecs_tw.o Modules/cjkcodecs/multibytecodec.o Modules/unicodedata.o Modules/_cryptmodule.o Modules/mmapmodule.o Modules/_posixsubprocess.o Modules/resource.o Modules/selectmodule.o Modules/socketmodule.o Modules/termios.o Modules/_multiprocessing/posixshmem.o Modules/_xxtestfuzz/_xxtestfuzz.o Modules/_xxtestfuzz/fuzzer.o Modules/_testbuffer.o Modules/_testinternalcapi.o Modules/_testcapimodule.o Modules/atexitmodule.o Modules/faulthandler.o Modules/posixmodule.o Modules/signalmodule.o Modules/_tracemalloc.o Modules/_codecsmodule.o Modules/_collectionsmodule.o Modules/errnomodule.o Modules/_io/_iomodule.o Modules/_io/iobase.o Modules/_io/fileio.o Modules/_io/bytesio.o Modules/_io/bufferedio.o Modules/_io/textio.o Modules/_io/stringio.o Modules/itertoolsmodule.o Modules/_sre.o Modules/_threadmodule.o Modules/timemodule.o Modules/_weakref.o Modules/_abc.o Modules/_functoolsmodule.o Modules/_localemodule.o Modules/_operator.o Modules/_stat.o Modules/symtablemodule.o Modules/pwdmodule.o Modules/xxsubtype.o Python/deepfreeze/deepfreeze.o Modules/getpath.o Python/frozen.o Modules/_decimal/libmpdec/libmpdec.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libz.a Modules/expat/libexpat.a -L/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/crtbegin.o -lGL-mt -lal -lhtml5 -lstubs-debug -lc-mt-debug -lcompiler_rt-mt -lc++-mt-noexcept -lc++abi-mt-noexcept -ldlmalloc-mt -lc_rt-mt -lsockets-mt -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --import-undefined --import-memory --shared-memory --export-if-defined=main --export-if-defined=_emscripten_thread_init --export-if-defined=_emscripten_thread_exit --export-if-defined=emscripten_tls_init --export-if-defined=emscripten_current_thread_process_queued_calls --export-if-defined=pthread_self --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=fflush --export=sbrk --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_init --export=stackSave --export=stackRestore --export=stackAlloc --export=__wasm_call_ctors --export=__errno_location --export=emscripten_get_sbrk_ptr --export=emscripten_stack_get_base --export=emscripten_dispatch_to_thread_ --export=_emscripten_main_thread_futex --export=_emscripten_thread_free_data --export=_emscripten_allow_main_runtime_queued_calls --export=emscripten_main_browser_thread_id --export=emscripten_main_thread_process_queued_calls --export=emscripten_run_in_main_runtime_thread_js --export=emscripten_stack_set_limits --export=emscripten_sync_run_in_main_thread_2 --export=emscripten_sync_run_in_main_thread_4 --export=memalign --export=emscripten_proxy_main --export=__funcs_on_exit --export=malloc --export=free --export=_get_tzname --export=_get_daylight --export=_get_timezone --export=ntohs --export=htons --export=htonl --export=raise --export-table -z stack-size=5242880 --initial-memory=16777216 --no-entry --max-memory=2147483648 --global-base=1024
 "/usr/bin/python3" /emsdk/upstream/emscripten/tools/wasm-sourcemap.py python.wasm --dwarfdump=/emsdk/upstream/bin/llvm-dwarfdump -o python.wasm.map --basepath=/python-wasm/cpython/builddir/emscripten-node
 "/emsdk/upstream/bin/wasm-emscripten-finalize" --minimize-wasm-changes --output-source-map-url=python.wasm.map -g --dyncalls-i64 --dwarf python.wasm -o python.wasm --detect-features --input-source-map=python.wasm.map --output-source-map=python.wasm.map
 "/emsdk/node/14.18.2_64bit/bin/node" /emsdk/upstream/emscripten/src/compiler.js /tmp/tmpzxuj7f53.json
emcc:WARNING: Wasm source map won't be usable in a browser without --source-map-base
 "/emsdk/upstream/bin/wasm-opt" --strip-dwarf --safe-heap --strip-producers python.wasm -o python.wasm -g --mvp-features --enable-threads --enable-mutable-globals --enable-bulk-memory --enable-sign-ext --input-source-map=python.wasm.map --output-source-map=python.wasm.map
 "/emsdk/node/14.18.2_64bit/bin/node" /emsdk/upstream/emscripten/tools/acorn-optimizer.js /tmp/emscripten_temp_8at6r3un/python.js growableHeap
 "/emsdk/node/14.18.2_64bit/bin/node" /emsdk/upstream/emscripten/tools/acorn-optimizer.js /tmp/emscripten_temp_8at6r3un/python.js.pgrow.js safeHeap
 "/emsdk/node/14.18.2_64bit/bin/node" /emsdk/upstream/emscripten/tools/preprocessor.js /tmp/emscripten_temp_8at6r3un/settings.js worker.js --expandMacros

freeaddrinfo crash

# cat sock.py
import socket
name = socket.gethostname()
while True:
    print(socket.gethostbyname(name))

# node --experimental-wasm-threads --experimental-wasm-bulk-memory python.js sock.py 
172.29.1.0
172.29.1.0
Aborted(segmentation fault)
worker.js onmessage() captured an uncaught exception: RuntimeError: Aborted(segmentation fault)
Pthread 0x8912f8 sent an error! undefined:undefined: Aborted(segmentation fault)

/python-wasm/cpython/builddir/emscripten-node/python.js:161
   throw ex;
   ^
Error [RuntimeError]: Aborted(segmentation fault)
    at abort (eval at importScripts (/python-wasm/cpython/builddir/emscripten-node/python.worker.js:38:16), <anonymous>:1431:10)
    at segfault (eval at importScripts (/python-wasm/cpython/builddir/emscripten-node/python.worker.js:38:16), <anonymous>:785:2)
    at SAFE_HEAP_LOAD_i32_2_U_2 (<anonymous>:wasm-function[8674]:0x348d3e)
    at freeaddrinfo (<anonymous>:wasm-function[8637]:0x348772)
    at setipaddr (<anonymous>:wasm-function[5809]:0x272285)
    at socket_gethostbyname (<anonymous>:wasm-function[5814]:0x2724ae)
    at cfunction_call (<anonymous>:wasm-function[1850]:0xa9e17)
    at _PyObject_MakeTpCall (<anonymous>:wasm-function[820]:0x5748c)
    at PyObject_Vectorcall (<anonymous>:wasm-function[828]:0x57c4c)
    at _PyEval_EvalFrameDefault (<anonymous>:wasm-function[3084]:0x1510a4)
Emitted 'error' event on process instance at:
    at emitUnhandledRejectionOrErr (internal/event_target.js:579:11)
    at MessagePort.[nodejs.internal.kHybridDispatch] (internal/event_target.js:403:9)
    at MessagePort.exports.emitMessage (internal/per_context/messageport.js:18:26)
WASM dis of freeaddrinfo
# /emsdk/upstream/bin/wasm-dis python.wasm -sm python.wasm.map -o python.wat

 ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:8:0
 (func $freeaddrinfo (param $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local.set $1
   (i32.const 1)
  )
  (loop $label$1
   ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:10:28
   (local.set $1
    (i32.add
     (local.tee $2
      (local.get $1)
     )
     (i32.const 1)
    )
   )
   (br_if $label$1
    (local.tee $0
     (call $SAFE_HEAP_LOAD_i32_4_4
      (local.tee $3
       (local.get $0)
      )
      (i32.const 28)
     )
    )
   )
  )
  ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:13:1
  (call $__lock
   (local.tee $3
    (i32.add
     ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:12:3
     (local.tee $0
      (i32.add
       ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:10:1
       (local.get $3)
       ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:12:3
       (i32.mul
        ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:12:9
        (i32.sub
         ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:10:1
         (i32.const 0)
         ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:12:9
         (call $SAFE_HEAP_LOAD_i32_2_2
          (local.get $3)
          (i32.const 64)
         )
        )
        ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:12:3
        (i32.const 68)
       )
      )
     )
     ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:13:1
     (i32.const 60)
    )
   )
  )
  ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:14:14
  (call $SAFE_HEAP_STORE_i32_2_2
   (local.get $0)
   (i32.const 66)
   (local.tee $1
    (i32.sub
     (call $SAFE_HEAP_LOAD_i32_2_U_2
      (local.get $0)
      (i32.const 66)
     )
     (local.get $2)
    )
   )
  )
  (block $label$2
   (br_if $label$2
    (i32.and
     (local.get $1)
     (i32.const 65535)
    )
   )
   ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:14:23
   (call $dlfree
    (local.get $0)
   )
   ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:16:0
   (return)
  )
  ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:15:6
  (call $__unlock
   (local.get $3)
  )
  ;;@ ../../../../b/s/w/ir/x/w/install/emscripten/system/lib/libc/musl/src/network/freeaddrinfo.c:16:0
 )

If I understand the assembly code correctly, then the crash is caused by deref of b->ref on line 14 of github.com/emscripten-core/emscripten/blob/3.1.1/system/lib/libc/musl/src/network/freeaddrinfo.c#L14 . I think there is a mismatch between JS allocaddrinfo and MUSL freeaddrinfo struct aibuf.

getaddrinfo memory leak

#define _POSIX_C_SOURCE 200112L

#include <string.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>

int main(void)
{
    struct addrinfo hints, *res;
    struct sockaddr_in *addr;
    int i, error;

    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_UNSPEC;

    for (i=0; i < 10000; i++) {
        char host[1024];
        char out[16];
        
        error = gethostname(host, (int)sizeof(host) -1);
        if (error < 0) {
            fprintf(stderr, "gethostname\n");
            return -1;
        }
        
        error = getaddrinfo(host, NULL, &hints, &res);
        if (error) {
            fprintf(stderr, "%s\n", gai_strerror(error));
            return -1;
        }
        addr = (struct sockaddr_in *)res->ai_addr;
        inet_ntop(AF_INET, &addr->sin_addr, out, sizeof(out));
        fprintf(stdout, "addr: %s\n", out);
        freeaddrinfo(res);
    }

    return 0;
}
# emcc -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD -fsanitize=address -gsource-map -o addrtest.js addrtest.c
# node --experimental-wasm-threads --experimental-wasm-bulk-memory addrtest.js
...
Direct leak of 319968 byte(s) in 9999 object(s) allocated from:
    #0 0x1f21d in malloc ../../../b/s/w/ir/x/w/install/emscripten/system/lib/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x80000578  (JavaScript+0x578)
    #2 0x8000194c in allocaddrinfo /python-wasm/cpython/builddir/addrtest.js:6476:8
    #3 0x800019bb in _getaddrinfo /python-wasm/cpython/builddir/addrtest.js:6587:7
    #4 0x800015f5 in _emscripten_receive_on_main_thread_js /python-wasm/cpython/builddir/addrtest.js:5621:14
    #5 0xba67 in _do_call ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:207:86
    #6 0xad3f in emscripten_current_thread_process_queued_calls ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:637:5
    #7 0xe603 in emscripten_main_thread_process_queued_calls ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:661:3

Indirect leak of 159984 byte(s) in 9999 object(s) allocated from:
    #0 0x1f21d in malloc ../../../b/s/w/ir/x/w/install/emscripten/system/lib/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0x80000578  (JavaScript+0x578)
    #2 0x80001949 in allocaddrinfo /python-wasm/cpython/builddir/addrtest.js:6473:8
    #3 0x800019bb in _getaddrinfo /python-wasm/cpython/builddir/addrtest.js:6587:7
    #4 0x800015f5 in _emscripten_receive_on_main_thread_js /python-wasm/cpython/builddir/addrtest.js:5621:14
    #5 0xba67 in _do_call ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:207:86
    #6 0xad3f in emscripten_current_thread_process_queued_calls ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:637:5
    #7 0xe603 in emscripten_main_thread_process_queued_calls ../../../b/s/w/ir/x/w/install/emscripten/system/lib/pthread/library_pthread.c:661:3

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions