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

Calling from Python multiprocessing causes hanging #206

Open
curtd opened this issue Oct 12, 2018 · 25 comments
Open

Calling from Python multiprocessing causes hanging #206

curtd opened this issue Oct 12, 2018 · 25 comments

Comments

@curtd
Copy link

curtd commented Oct 12, 2018

Hello! I'm currently trying to invoke a julia function via pyjulia, which works great in the serial python case, but causes hanging for some reason when invoked in python multiprocessing pool (through a map operation, say). Has anyone else run into this problem and, if so, have they found any solution to this issue?

@tkf
Copy link
Member

tkf commented Oct 12, 2018

from multiprocessing import Pool


def printpid(i):
    # from julia import Julia
    # Julia(debug=True)

    from julia.Base import println, getpid
    println("pid = ", getpid(), "i = ", i)


pool = Pool()
pool.map(printpid, range(4))

works for me. Tested with master.

@tkf
Copy link
Member

tkf commented Oct 12, 2018

Note that multiprocessing uses threads behind the scene and julia is not thread-safe. It may segfault if you are not careful. (edit: Actually, I'm not sure about this. If Julia objects are not used in different threads, I guess this should be fine.) If you want RPC in Julia, it perhaps better to use Distributed (which is like multiprocessing in Julia).

See, e.g., https://docs.julialang.org/en/v1/stdlib/Distributed/index.html#Distributed.pmap

@curtd
Copy link
Author

curtd commented Oct 25, 2018

Thanks for your reply. I ended up remedying this situation by not calling pyjulia from the main Python thread but instead only calling it from the worker processes.

It's a bit of a specific scenario I'm involved in, as I'm trying to use

  • a PackageCompiler compiled Julia image (with the attendant code I'm interested in running)
  • pyjulia being invoked indirectly in each subprocess through a parallel pool, e.g.,
import multiprocessing as mp

def example_mp(args_list):
   with mp.Pool(4) as pool:
        results = pool.map(example_func_which_invokes_pyjulia, args_list)
   return results

I'm currently experiencing segfaults when the parallel pool is closed (the results themselves seem fine).
I think that it may have to do potentially with the issues of how Julia handles interruptions (e.g., #211), but this is only a hunch.

@tkf
Copy link
Member

tkf commented Oct 25, 2018

Yeah, multiprocessing could be using SIGINT for termination and it could be the problem (though I need to check the code). But if that's the case, I think you'd see something like

fatal: error thrown and no exception handler available.
InterruptException()

instead of segfault.

By "the results themselves seem fine", you mean the returned results are correct inside the with block but the segfault happens while closing the pool? If so, maybe it's something to do with interaction of GC and thread. But I'm only guessing.

@curtd
Copy link
Author

curtd commented Oct 25, 2018

Yes that's correct, the results computed by my function seem to be correct (in line with running them serially outside of pool). I also will occasionally receive a stacktrace like

signal (15): Terminated
in expression starting at no file:0
do_futex_wait.constprop.1 at /lib64/libpthread.so.0 (unknown line)
__new_sem_wait_slow.constprop.0 at /lib64/libpthread.so.0 (unknown line)
sem_wait at /lib64/libpthread.so.0 (unknown line)
PyThread_acquire_lock_timed at /Python-3.6.4/Python/thread_pthread.h:354
_enter_buffered_busy at /Python-3.6.4/./Modules/_io/bufferedio.c:292 [inlined]
buffered_flush at /Python-3.6.4/./Modules/_io/bufferedio.c:852
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2313
callmethod at /Python-3.6.4/Objects/abstract.c:2583 [inlined]
_PyObject_CallMethodId_SizeT at /Python-3.6.4/Objects/abstract.c:2685
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
call_function at /Python-3.6.4/Python/ceval.c:4824
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5008
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_init at /Python-3.6.4/Objects/typeobject.c:6407
type_call at /Python-3.6.4/Objects/typeobject.c:915
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
...
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
PyEval_EvalCode at /Python-3.6.4/Python/ceval.c:730
run_mod at /Python-3.6.4/Python/pythonrun.c:1025 [inlined]
PyRun_FileExFlags at /Python-3.6.4/Python/pythonrun.c:978
PyRun_SimpleFileExFlags at /Python-3.6.4/Python/pythonrun.c:420
run_file at /Python-3.6.4/Modules/main.c:338 [inlined]
Py_Main at /Python-3.6.4/Modules/main.c:809
main at /Python-3.6.4/./Programs/python.c:69
__libc_start_main at /lib64/libc.so.6 (unknown line)
_start at /usr/local/bin/python3.6 (unknown line)
unknown function (ip: 0xffffffffffffffff)
Allocations: 21513853 (Pool: 21499003; Big: 14850); GC: 277

signal (11): Segmentation fault
in expression starting at no file:0
tupledealloc at /Python-3.6.4/Objects/tupleobject.c:239
BaseException_clear at /Python-3.6.4/Objects/exceptions.c:75 [inlined]
BaseException_dealloc at /Python-3.6.4/Objects/exceptions.c:86
pydecref_ at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:102 [inlined]
pydecref at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:107
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1537 [inlined]
run_finalizer at /buildworker/worker/package_linux64/build/src/gc.c:115
jl_gc_run_finalizers_in_list at /buildworker/worker/package_linux64/build/src/gc.c:210
jl_gc_run_all_finalizers at /buildworker/worker/package_linux64/build/src/gc.c:245
jl_atexit_hook at /buildworker/worker/package_linux64/build/src/init.c:260
jl_exit at /buildworker/worker/package_linux64/build/src/jl_uv.c:604
jl_exit_thread0_cb at /buildworker/worker/package_linux64/build/src/signals-unix.c:342
unknown function (ip: 0xffffffffffffffff)

If that's helpful

@tkf
Copy link
Member

tkf commented Oct 26, 2018

These lines

pydecref_ at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:102 [inlined]
pydecref at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:107

could mean it's GC related.

But this simple script

import os
import threading
import time


def my_ident(_):
    time.sleep(0.001)
    return (os.getpid(), threading.get_ident(), threading.main_thread().ident)


if __name__ == "__main__":
    from multiprocessing import Pool
    import pprint
    num_pool = 4
    pool = Pool(num_pool)
    results = pool.map(my_ident, range(1000))
    pprint.pprint(sorted(set(results)))
    assert all(r[1] == r[2] for r in results)

shows that the function is executed in the main thread. So I'm not sure why multiprocessing could cause a problem.

Does example_func_which_invokes_pyjulia return any objects from julia like an array? If that's the case, (deep)coping it may solve the issue. (Yet another random guess.)

@tkf
Copy link
Member

tkf commented Oct 26, 2018

Using Distributed to fake multiprocessing is not super hard. Here is a quick hack:

# distributed.py
import os


def worker(i):
    return (i, os.getpid())


def main():
    from julia import Main
    Main.eval("""
    using Distributed
    @everywhere using PyCall
    @everywhere pushfirst!(PyVector(pyimport("sys")["path"]), @__DIR__)
    @everywhere function runpython(fullname, arg)
        m, f = rsplit(fullname, ".", limit=2)
        return pyimport(m)[f](arg)
    end

    function mappy(fullname, arglist)
        return Distributed.pmap(runpython, Iterators.cycle([fullname]), arglist)
    end
    """)
    results = Main.mappy("distributed.worker", range(3))
    print(results)


if __name__ == "__main__":
    from julia.Distributed import addprocs
    addprocs(3)
    main()

@curtd
Copy link
Author

curtd commented Oct 26, 2018

Unfortunately in example_func_which_invokes_pyjulia, there's an extensive python preamble and postamble surrounding the call to Julia, and the main driver program is written in python, which prevents me from porting everything to Julia (as I'd prefer to do, thus avoiding these headaches). Maybe I'll have to look into disabling garbage collection for Julia, I'm not exactly sure what the way forward should be to avoid this

@tkf
Copy link
Member

tkf commented Oct 26, 2018

In my example, each Julia worker calls Python function distributed.worker. You can run Python code inside it.

Side note: To use PyJulia inside worker function, use Julia(init_julia=False) to initialize it without extra overhead.

def worker(i):
    from julia import Julia
    Julia(init_julia=False)

    from julia import ...
    # do Python & Julia stuff

@tkf
Copy link
Member

tkf commented Oct 28, 2018

JuliaPy/PyCall.jl#603 may solve this issue

@curtd
Copy link
Author

curtd commented Oct 29, 2018

I will give it a try, thank you!

@tkf
Copy link
Member

tkf commented Oct 29, 2018

Also try pyjulia master now that #216 is merged.

@curtd
Copy link
Author

curtd commented Nov 1, 2018

Hmm unfortunately both of those changes still result in similar stacktrace dumps

signal (15): Terminated

signal (15): Terminated
in expression starting at no file:0
do_futex_wait.constprop.1 at /lib64/libpthread.so.0 (unknown line)
__new_sem_wait_slow.constprop.0 at /lib64/libpthread.so.0 (unknown line)
sem_wait at /lib64/libpthread.so.0 (unknown line)
PyThread_acquire_lock_timed at /Python-3.6.4/Python/thread_pthread.h:354
_enter_buffered_busy at /Python-3.6.4/./Modules/_io/bufferedio.c:292 [inlined]
buffered_flush at /Python-3.6.4/./Modules/_io/bufferedio.c:852
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2313
callmethod at /Python-3.6.4/Objects/abstract.c:2583 [inlined]
_PyObject_CallMethodId_SizeT at /Python-3.6.4/Objects/abstract.c:2685
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
call_function at /Python-3.6.4/Python/ceval.c:4824
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5008
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_init at /Python-3.6.4/Objects/typeobject.c:6407
type_call at /Python-3.6.4/Objects/typeobject.c:915
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
...
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
PyEval_EvalCode at /Python-3.6.4/Python/ceval.c:730
run_mod at /Python-3.6.4/Python/pythonrun.c:1025 [inlined]
PyRun_FileExFlags at /Python-3.6.4/Python/pythonrun.c:978
PyRun_SimpleFileExFlags at /Python-3.6.4/Python/pythonrun.c:420
run_file at /Python-3.6.4/Modules/main.c:338 [inlined]
Py_Main at /Python-3.6.4/Modules/main.c:809
main at /Python-3.6.4/./Programs/python.c:69
__libc_start_main at /lib64/libc.so.6 (unknown line)
_start at /usr/local/bin/python3.6 (unknown line)
unknown function (ip: 0xffffffffffffffff)
Allocations: 30387807 (Pool: 30360075; Big: 27732); GC: 568

signal (11): Segmentation fault
in expression starting at no file:0
tupledealloc at /Python-3.6.4/Objects/tupleobject.c:239
BaseException_clear at /Python-3.6.4/Objects/exceptions.c:75 [inlined]
BaseException_dealloc at /Python-3.6.4/Objects/exceptions.c:86
pydecref_ at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:102 [inlined]
pydecref at /julia/code/packages/PyCall/0jMpb/src/PyCall.jl:107
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1537 [inlined]
run_finalizer at /buildworker/worker/package_linux64/build/src/gc.c:115
jl_gc_run_finalizers_in_list at /buildworker/worker/package_linux64/build/src/gc.c:210
jl_gc_run_all_finalizers at /buildworker/worker/package_linux64/build/src/gc.c:245
jl_atexit_hook at /buildworker/worker/package_linux64/build/src/init.c:260
jl_exit at /buildworker/worker/package_linux64/build/src/jl_uv.c:604
jl_exit_thread0_cb at /buildworker/worker/package_linux64/build/src/signals-unix.c:342
unknown function (ip: 0xffffffffffffffff)
Allocations: 30395394 (Pool: 30367660; Big: 27734); GC: 568

@tkf
Copy link
Member

tkf commented Nov 2, 2018

From the path component PyCall/0jMpb, I suppose you are using PyCall v1.18.5. Did you try the combination of #216 and JuliaPy/PyCall.jl#603?

@curtd
Copy link
Author

curtd commented Nov 2, 2018

I have tried the combination of #216 and JuliaPy/PyCall.jl#603 but unfortunately I'm still getting these segfaults. It's a headscratcher. I won't be able to followup on this further unfortunately as I am leaving my current job, but I really appreciate your time into looking into this thus far.

signal (15): Terminated
in expression starting at no file:0
do_futex_wait.constprop.1 at /lib64/libpthread.so.0 (unknown line)
__new_sem_wait_slow.constprop.0 at /lib64/libpthread.so.0 (unknown line)
sem_wait at /lib64/libpthread.so.0 (unknown line)
PyThread_acquire_lock_timed at /Python-3.6.4/Python/thread_pthread.h:354
_enter_buffered_busy at /Python-3.6.4/./Modules/_io/bufferedio.c:292 [inlined]
buffered_flush at /Python-3.6.4/./Modules/_io/bufferedio.c:852
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2313
callmethod at /Python-3.6.4/Objects/abstract.c:2583 [inlined]
_PyObject_CallMethodId_SizeT at /Python-3.6.4/Objects/abstract.c:2685
_PyCFunction_FastCallDict at /Python-3.6.4/Objects/methodobject.c:192
call_function at /Python-3.6.4/Python/ceval.c:4824
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5008
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_init at /Python-3.6.4/Objects/typeobject.c:6407
type_call at /Python-3.6.4/Objects/typeobject.c:915
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
call_function at /Python-3.6.4/Python/ceval.c:4848
....
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
do_call_core at /Python-3.6.4/Python/ceval.c:5093 [inlined]
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3391
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5057
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_init at /Python-3.6.4/Objects/typeobject.c:6407
type_call at /Python-3.6.4/Objects/typeobject.c:915
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
_PyObject_FastCallKeywords at /Python-3.6.4/Objects/abstract.c:2496
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
function_call at /Python-3.6.4/Objects/funcobject.c:604
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
do_call_core at /Python-3.6.4/Python/ceval.c:5093 [inlined]
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3391
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
function_call at /Python-3.6.4/Objects/funcobject.c:604
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
do_call_core at /Python-3.6.4/Python/ceval.c:5093 [inlined]
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3391
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5057
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_call at /Python-3.6.4/Objects/typeobject.c:6194
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
_PyObject_FastCallKeywords at /Python-3.6.4/Objects/abstract.c:2496
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
function_call at /Python-3.6.4/Objects/funcobject.c:604
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
do_call_core at /Python-3.6.4/Python/ceval.c:5093 [inlined]
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3391
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5057
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_call at /Python-3.6.4/Objects/typeobject.c:6194
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
_PyObject_FastCallKeywords at /Python-3.6.4/Objects/abstract.c:2496
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
function_call at /Python-3.6.4/Objects/funcobject.c:604
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
do_call_core at /Python-3.6.4/Python/ceval.c:5093 [inlined]
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3391
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
fast_function at /Python-3.6.4/Python/ceval.c:4965 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906
fast_function at /Python-3.6.4/Python/ceval.c:4941 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
_PyFunction_FastCallDict at /Python-3.6.4/Python/ceval.c:5057
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2310
_PyObject_Call_Prepend at /Python-3.6.4/Objects/abstract.c:2373
PyObject_Call at /Python-3.6.4/Objects/abstract.c:2261
slot_tp_call at /Python-3.6.4/Objects/typeobject.c:6194
_PyObject_FastCallDict at /Python-3.6.4/Objects/abstract.c:2331
_PyObject_FastCallKeywords at /Python-3.6.4/Objects/abstract.c:2496
call_function at /Python-3.6.4/Python/ceval.c:4848
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3338
_PyFunction_FastCall at /Python-3.6.4/Python/ceval.c:4906 [inlined]
fast_function at /Python-3.6.4/Python/ceval.c:4948 [inlined]
call_function at /Python-3.6.4/Python/ceval.c:4845
_PyEval_EvalFrameDefault at /Python-3.6.4/Python/ceval.c:3322
_PyEval_EvalCodeWithName at /Python-3.6.4/Python/ceval.c:4153
PyEval_EvalCodeEx at /Python-3.6.4/Python/ceval.c:4174
PyEval_EvalCode at /Python-3.6.4/Python/ceval.c:730
run_mod at /Python-3.6.4/Python/pythonrun.c:1025 [inlined]
PyRun_FileExFlags at /Python-3.6.4/Python/pythonrun.c:978
PyRun_SimpleFileExFlags at /Python-3.6.4/Python/pythonrun.c:420
run_file at /Python-3.6.4/Modules/main.c:338 [inlined]
Py_Main at /Python-3.6.4/Modules/main.c:809
main at /Python-3.6.4/./Programs/python.c:69
__libc_start_main at /lib64/libc.so.6 (unknown line)
_start at /usr/local/bin/python3.6 (unknown line)
unknown function (ip: 0xffffffffffffffff)
Allocations: 16431258 (Pool: 16424272; Big: 6986); GC: 108

signal (11): Segmentation fault
in expression starting at no file:0
tupledealloc at /Python-3.6.4/Objects/tupleobject.c:239
BaseException_clear at /Python-3.6.4/Objects/exceptions.c:75 [inlined]
BaseException_dealloc at /Python-3.6.4/Objects/exceptions.c:86
pydecref_ at /julia/code/packages/PyCall/g7Yqr/src/PyCall.jl:105 [inlined]
pydecref at /julia/code/packages/PyCall/g7Yqr/src/PyCall.jl:110
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2184
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1537 [inlined]
run_finalizer at /buildworker/worker/package_linux64/build/src/gc.c:115
jl_gc_run_finalizers_in_list at /buildworker/worker/package_linux64/build/src/gc.c:210
jl_gc_run_all_finalizers at /buildworker/worker/package_linux64/build/src/gc.c:245
jl_atexit_hook at /buildworker/worker/package_linux64/build/src/init.c:260
jl_exit at /buildworker/worker/package_linux64/build/src/jl_uv.c:604
jl_exit_thread0_cb at /buildworker/worker/package_linux64/build/src/signals-unix.c:342
unknown function (ip: 0xffffffffffffffff)

@tkf
Copy link
Member

tkf commented Nov 3, 2018

Thanks for the confirmation! I guess I better run a MWE myself for digging it further.

@rwgardner2
Copy link

Confirming I have this problem too. A simple include with multiprocessing gives me errors much like the one above.

@DarrenRuan
Copy link

By the way, has this issue been solved in the latest pyjulia (python package) with PyCall (Julia Package)? What should we do if we want to solve this problem? Is this issue related to some issues like "julia processes remaining unfinished and the python script moving on"?

@marius311
Copy link
Contributor

Also asking if anyone has a solution for this? Running @tkf's MWE from #206 (comment) on Linux / Julia 1.5 / Python 3.7.3 / pyjulia 0.5.3 / PyCall v1.91.4 via python-jl gives me a segfault similar to those above.

Note that multiprocessing uses threads behind the scene

Maybe multiprocessing is using threads at some point, I don't know, but I do know that on Linux the default thing its doing is fork()ing to generate worker processes. Would that be expected to screw up Julia in some way?

julia: /home/marius/src/julia-1.5/src/debuginfo.cpp:1620: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.
julia: /home/marius/src/julia-1.5/src/debuginfo.cpp:1620: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.

signal (6): Aborted

signal (6): Aborted
in expression starting at none:4
in expression starting at none:4
julia: /home/marius/src/julia-1.5/src/debuginfo.cpp:1620: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.
julia: /home/marius/src/julia-1.5/src/debuginfo.cpp:1620: void register_eh_frames(uint8_t*, size_t): Assertion `end_ip != 0' failed.

signal (6): Aborted

signal (6): Aborted
in expression starting at none:4
in expression starting at none:4
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f8802d41728)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f8802d41728)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
register_eh_frames at /home/marius/src/julia-1.5/src/debuginfo.cpp:1620
register_eh_frames at /home/marius/src/julia-1.5/src/debuginfo.cpp:1620
finalizeMemory at /home/marius/src/julia-1.5/src/cgmemmgr.cpp:873
_ZN4llvm11RuntimeDyld32finalizeWithMemoryManagerLockingEv at /home/marius/src/julia-1.5/usr/bin/../lib/libLLVM-9jl.so (unknown line)
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7f8802d41728)
unknown function (ip: 0x7f8802d41728)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
finalizeMemory at /home/marius/src/julia-1.5/src/cgmemmgr.cpp:873
_ZN4llvm11RuntimeDyld32finalizeWithMemoryManagerLockingEv at /home/marius/src/julia-1.5/usr/bin/../lib/libLLVM-9jl.so (unknown line)
register_eh_frames at /home/marius/src/julia-1.5/src/debuginfo.cpp:1620
register_eh_frames at /home/marius/src/julia-1.5/src/debuginfo.cpp:1620
finalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:255
finalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:255
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:462 [inlined]
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h:127 [inlined]
addModule at /home/marius/src/julia-1.5/src/jitlayers.cpp:651
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:462 [inlined]
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h:127 [inlined]
addModule at /home/marius/src/julia-1.5/src/jitlayers.cpp:651
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:893 [inlined]
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:955
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:977 [inlined]
_jl_compile_codeinst at /home/marius/src/julia-1.5/src/jitlayers.cpp:126
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:893 [inlined]
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:955
finalizeMemory at /home/marius/src/julia-1.5/src/cgmemmgr.cpp:873
finalizeMemory at /home/marius/src/julia-1.5/src/cgmemmgr.cpp:873
_ZN4llvm11RuntimeDyld32finalizeWithMemoryManagerLockingEv at /home/marius/src/julia-1.5/usr/bin/../lib/libLLVM-9jl.so (unknown line)
jl_generate_fptr at /home/marius/src/julia-1.5/src/jitlayers.cpp:302
_ZN4llvm11RuntimeDyld32finalizeWithMemoryManagerLockingEv at /home/marius/src/julia-1.5/usr/bin/../lib/libLLVM-9jl.so (unknown line)
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:977 [inlined]
_jl_compile_codeinst at /home/marius/src/julia-1.5/src/jitlayers.cpp:126
jl_generate_fptr at /home/marius/src/julia-1.5/src/jitlayers.cpp:302
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1964
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1931 [inlined]
_jl_invoke at /home/marius/src/julia-1.5/src/gf.c:2224 [inlined]
jl_apply_generic at /home/marius/src/julia-1.5/src/gf.c:2398
convert at /home/marius/.julia/packages/PyCall/GkWdC/src/conversions.jl:832
julia_args at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:18 [inlined]
_pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:24
unknown function (ip: 0x7f87e7332671)
pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:49
unknown function (ip: 0x7f87e7306999)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1964
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1931 [inlined]
_jl_invoke at /home/marius/src/julia-1.5/src/gf.c:2224 [inlined]
jl_apply_generic at /home/marius/src/julia-1.5/src/gf.c:2398
convert at /home/marius/.julia/packages/PyCall/GkWdC/src/conversions.jl:832
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
julia_args at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:18 [inlined]
_pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:24
unknown function (ip: 0x7f87e7332671)
pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:49
unknown function (ip: 0x7f87e7306999)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
map_next.lto_priv.527 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list_extend.lto_priv.888 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
map_next.lto_priv.527 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list___init__.lto_priv.379 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list_extend.lto_priv.888 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list___init__.lto_priv.379 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
finalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:255
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:462 [inlined]
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h:127 [inlined]
addModule at /home/marius/src/julia-1.5/src/jitlayers.cpp:651
finalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:255
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:893 [inlined]
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:955
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h:462 [inlined]
emitAndFinalize at /home/marius/src/julia-1.5/usr/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h:127 [inlined]
addModule at /home/marius/src/julia-1.5/src/jitlayers.cpp:651
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:977 [inlined]
_jl_compile_codeinst at /home/marius/src/julia-1.5/src/jitlayers.cpp:126
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:893 [inlined]
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:955
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_generate_fptr at /home/marius/src/julia-1.5/src/jitlayers.cpp:302
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_add_to_ee at /home/marius/src/julia-1.5/src/jitlayers.cpp:977 [inlined]
_jl_compile_codeinst at /home/marius/src/julia-1.5/src/jitlayers.cpp:126
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_generate_fptr at /home/marius/src/julia-1.5/src/jitlayers.cpp:302
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1964
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1931 [inlined]
_jl_invoke at /home/marius/src/julia-1.5/src/gf.c:2224 [inlined]
jl_apply_generic at /home/marius/src/julia-1.5/src/gf.c:2398
convert at /home/marius/.julia/packages/PyCall/GkWdC/src/conversions.jl:832
julia_args at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:18 [inlined]
_pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:24
unknown function (ip: 0x7f87e7332671)
pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:49
unknown function (ip: 0x7f87e7306999)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1964
jl_compile_method_internal at /home/marius/src/julia-1.5/src/gf.c:1931 [inlined]
_jl_invoke at /home/marius/src/julia-1.5/src/gf.c:2224 [inlined]
jl_apply_generic at /home/marius/src/julia-1.5/src/gf.c:2398
convert at /home/marius/.julia/packages/PyCall/GkWdC/src/conversions.jl:832
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCodeEx at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCode at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
julia_args at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:18 [inlined]
_pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:24
unknown function (ip: 0x7f87e7332671)
pyjlwrap_call at /home/marius/.julia/packages/PyCall/GkWdC/src/callback.jl:49
unknown function (ip: 0x7f87e7306999)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
builtin_exec at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyMethodDef_RawFastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCodeEx at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyCFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCode at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
map_next.lto_priv.527 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
builtin_exec at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyMethodDef_RawFastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyCFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list_extend.lto_priv.888 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list___init__.lto_priv.379 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
map_next.lto_priv.527 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
macro expansion at /home/marius/.julia/packages/PyCall/GkWdC/src/exception.jl:95 [inlined]
#110 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:446 [inlined]
__pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:42 [inlined]
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:29
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:11 [inlined]
#_#117 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86 [inlined]
PyObject at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
list_extend.lto_priv.888 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_apply at /home/marius/src/julia-1.5/src/julia.h:1690 [inlined]
do_call at /home/marius/src/julia-1.5/src/interpreter.c:117
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
macro expansion at /home/marius/.julia/packages/PyCall/GkWdC/src/exception.jl:95 [inlined]
#110 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:446 [inlined]
__pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:42 [inlined]
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:29
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:11 [inlined]
#_#117 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86 [inlined]
PyObject at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86
list___init__.lto_priv.379 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval_value at /home/marius/src/julia-1.5/src/interpreter.c:206
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval_body at /home/marius/src/julia-1.5/src/interpreter.c:428
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_apply at /home/marius/src/julia-1.5/src/julia.h:1690 [inlined]
do_call at /home/marius/src/julia-1.5/src/interpreter.c:117
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_interpret_toplevel_thunk at /home/marius/src/julia-1.5/src/interpreter.c:660
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval_value at /home/marius/src/julia-1.5/src/interpreter.c:206
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval_body at /home/marius/src/julia-1.5/src/interpreter.c:428
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:840
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_interpret_toplevel_thunk at /home/marius/src/julia-1.5/src/interpreter.c:660
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:790
jl_toplevel_eval_in at /home/marius/src/julia-1.5/src/toplevel.c:883
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:840
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:790
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_toplevel_eval_in at /home/marius/src/julia-1.5/src/toplevel.c:883
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCodeEx at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCode at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
builtin_exec at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyMethodDef_RawFastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyCFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
slot_tp_init at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
type_call.lto_priv.151 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCodeEx at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
PyEval_EvalCode at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
builtin_exec at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyMethodDef_RawFastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyCFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
macro expansion at /home/marius/.julia/packages/PyCall/GkWdC/src/exception.jl:95 [inlined]
#110 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:446 [inlined]
__pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:42 [inlined]
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:29
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:11 [inlined]
#_#117 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86 [inlined]
PyObject at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_apply at /home/marius/src/julia-1.5/src/julia.h:1690 [inlined]
do_call at /home/marius/src/julia-1.5/src/interpreter.c:117
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval at ./boot.jl:331
eval_value at /home/marius/src/julia-1.5/src/interpreter.c:206
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
eval at ./boot.jl:331
eval_body at /home/marius/src/julia-1.5/src/interpreter.c:428
call_function.lto_priv.1536 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
jl_interpret_toplevel_thunk at /home/marius/src/julia-1.5/src/interpreter.c:660
macro expansion at /home/marius/.julia/packages/PyCall/GkWdC/src/exception.jl:95 [inlined]
#110 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:446 [inlined]
__pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:42 [inlined]
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:29
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:11 [inlined]
#_#117 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86 [inlined]
PyObject at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:840
jl_apply at /home/marius/src/julia-1.5/src/julia.h:1690 [inlined]
do_call at /home/marius/src/julia-1.5/src/interpreter.c:117
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:790
jl_toplevel_eval_in at /home/marius/src/julia-1.5/src/toplevel.c:883
eval_value at /home/marius/src/julia-1.5/src/interpreter.c:206
exec_options at ./client.jl:272
eval_body at /home/marius/src/julia-1.5/src/interpreter.c:428
exec_options at ./client.jl:272
jl_interpret_toplevel_thunk at /home/marius/src/julia-1.5/src/interpreter.c:660
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:840
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:790
jl_toplevel_eval_in at /home/marius/src/julia-1.5/src/toplevel.c:883
_start at ./client.jl:506
_start at ./client.jl:506
jfptr__start_56184 at /home/marius/src/julia-1.5/usr/lib/julia/sys.so (unknown line)
unknown function (ip: 0x55b87d4da9d9)
unknown function (ip: 0x55b87d4da5a6)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x55b87d4da64d)
Allocations: 8657316 (Pool: 8654351; Big: 2965); GC: 9
jfptr__start_56184 at /home/marius/src/julia-1.5/usr/lib/julia/sys.so (unknown line)
unknown function (ip: 0x55b87d4da9d9)
unknown function (ip: 0x55b87d4da5a6)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x55b87d4da64d)
Allocations: 8657316 (Pool: 8654351; Big: 2965); GC: 9
eval at ./boot.jl:331
eval at ./boot.jl:331
exec_options at ./client.jl:272
_start at ./client.jl:506
exec_options at ./client.jl:272
jfptr__start_56184 at /home/marius/src/julia-1.5/usr/lib/julia/sys.so (unknown line)
unknown function (ip: 0x55b87d4da9d9)
unknown function (ip: 0x55b87d4da5a6)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x55b87d4da64d)
Allocations: 8657316 (Pool: 8654351; Big: 2965); GC: 9
_start at ./client.jl:506
jfptr__start_56184 at /home/marius/src/julia-1.5/usr/lib/julia/sys.so (unknown line)
unknown function (ip: 0x55b87d4da9d9)
unknown function (ip: 0x55b87d4da5a6)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x55b87d4da64d)
Allocations: 8657316 (Pool: 8654351; Big: 2965); GC: 9
^C^C^C^C^C^C^C^C^C^CWARNING: Force throwing a SIGINT

signal (11): Segmentation fault
in expression starting at none:4
tupledealloc.lto_priv.484 at /home/marius/miniconda3/lib/libpython3.7m.so.1.0 (unknown line)
pydecref_ at /home/marius/.julia/packages/PyCall/GkWdC/src/PyCall.jl:118
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:31
_pycall! at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:11 [inlined]
#_#117 at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86 [inlined]
PyObject at /home/marius/.julia/packages/PyCall/GkWdC/src/pyfncall.jl:86
jl_apply at /home/marius/src/julia-1.5/src/julia.h:1690 [inlined]
do_call at /home/marius/src/julia-1.5/src/interpreter.c:117
eval_value at /home/marius/src/julia-1.5/src/interpreter.c:206
eval_body at /home/marius/src/julia-1.5/src/interpreter.c:428
jl_interpret_toplevel_thunk at /home/marius/src/julia-1.5/src/interpreter.c:660
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:840
jl_toplevel_eval_flex at /home/marius/src/julia-1.5/src/toplevel.c:790
jl_toplevel_eval_in at /home/marius/src/julia-1.5/src/toplevel.c:883
eval at ./boot.jl:331
exec_options at ./client.jl:272
_start at ./client.jl:506
jfptr__start_56184 at /home/marius/src/julia-1.5/usr/lib/julia/sys.so (unknown line)
unknown function (ip: 0x55b87d4da9d9)
unknown function (ip: 0x55b87d4da5a6)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x55b87d4da64d)
Allocations: 8657316 (Pool: 8654351; Big: 2965); GC: 9
^CSegmentation fault (core dumped)

@tkf
Copy link
Member

tkf commented Sep 14, 2020

I think what I meant was that multiprocessing uses threads to concurrently communicate with sub-processes. For example, maybe a julia object can be serialized and send to a worker process in a background thread?

Now that Julia has a proper stable threading interface, I think it's better to properly handle GIL in PyCall. It's probably possible to throw a Python error when called from a non-primary thread before unsafely invoking Julia runtime.

@marius311
Copy link
Contributor

marius311 commented Sep 14, 2020

Sorry, I think I'm not understanding something. On the worker side, I think the following confirms the call into Julia is only done on the main thread:

# tweak your MWE to this:
def printpid(i):
    print("tid=", threading.current_thread(), " pid=", os.getpid())
    println("pid = ", getpid(), "i = ", i)

# now this is printed before the segfault:
tid= <_MainThread(MainThread, started 139989811532352)>  pid= 293764
tid= <_MainThread(MainThread, started 139989811532352)>  pid= 293765
tid= <_MainThread(MainThread, started 139989811532352)>  pid= 293766
tid= <_MainThread(MainThread, started 139989811532352)>  pid= 293767

and I think the segfault originates in the Julia call, not in any of the communication code on either worker/master side, so why are threads/GIL relevant here?

@tkf
Copy link
Member

tkf commented Sep 14, 2020

via python-jl

I missed this. python-jl starts a process as julia so I'm not sure multiprocessing supports it. Using multiprocessing.set_start_method("spawn") like this

import multiprocessing
from multiprocessing import Pool


def printpid(i):
    from julia.Base import println, getpid
    println("pid = ", getpid(), "i = ", i)


if __name__ == "__main__":
    multiprocessing.set_start_method("spawn")  # added this
    pool = Pool()
    pool.map(printpid, range(4))
    print("DONE!")

produces a slightly "better" result in the sense that I can now see print("DONE!") is printed. However, it segfaults after that. Maybe atexit hook is invoked in a non-main thread?

Of course, this doesn't explain why the fork-based method doesn't work. But IIUC it's very tricky to use fork with multithreaded software. I think libjulia needs several threads to work so it's probably not safe to use with the default fork method.

so why are threads/GIL relevant here?

It doesn't happen in my MWE but the scenario I described could happen if you return something from the function you passed to pool.map. I don't know multiprocessing internal enough to conclude if it's relevant, though. Also, I wonder if it's possible for __del__ to be called via GC in other threads?

@marius311
Copy link
Contributor

Thanks yea, same behavior for me with that script. However, set_start_method("spawn") is really undesirable in my case since it has to run your entire script again on the workers.

Actually, it appears you can use set_start_method("fork") (the default) as long as you don't ever load Julia on the master process. This does mean you can't use python-jl, but with eg a dynamically linked Python, this runs and exits cleanly:

import multiprocessing
from multiprocessing import Pool

# uncomment to trigger segfault:
# from julia.Base import println, getpid

def printpid(i):
    from julia.Base import println, getpid
    println("pid = ", getpid(), "i = ", i)

pool = Pool()
pool.map(printpid, range(4))
print("DONE!")

That may be enough of a workaround in my case, testing...

@tkf
Copy link
Member

tkf commented Sep 15, 2020

Actually, it appears you can use set_start_method("fork") (the default) as long as you don't ever load Julia on the master process.

Do you mean with python-jl or with normal python? If you don't use python-jl, I think it's a nice approach to avoid instantiating libjulia runtime before forking.

@marius311
Copy link
Contributor

With dynamically linked Python or custom sysimage, not python-jl. And yea, I agree, now that I've realized Julia is (currently) unfork()able, its clear this is the only way Python multiprocessing can work, but its not even that bad of a way. (The ipyparallel thing mentioned in my other PR is better though)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants