JuliaPy / JuliaPy/PyPlot.jl

Segfault in figure() when package Gtk imported

Aperta
#199 4 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
488
Fork
90
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

When running the following code, I get a segfault:

``` julia
using PyPlot
import Gtk
figure()
```

I'm on Ubuntu 14.04, with libgtk-3-dev (3.10.8-0ubuntu1.6) installed. I've reproduced the segfault with both the most recent tagged versions of Gtk.jl, PyCall.jl, and PyPlot.jl as well as the master branches of all of those packages.

The error message I get is:

```
julia:11038): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplayManager'

(julia:11038): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(julia:11038): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed

(julia:11038): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(julia:11038): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(julia:11038): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(julia:11038): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(julia:11038): GLib-GObject-WARNING **: cannot register existing type 'GdkDisplay'

(julia:11038): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(julia:11038): GLib-GObject-CRITICAL **: g_type_register_static: assertion 'parent_type > 0' failed

(julia:11038): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(julia:11038): GLib-GObject-CRITICAL **: g_object_new: assertion 'G_TYPE_IS_OBJECT (object_type)' failed

signal (11): Segmentation fault
gdk_display_open at /usr/bin/../lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (unknown line)
gdk_display_open_default_libgtk_only at /usr/bin/../lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (unknown line)
gtk_init_check at /usr/bin/../lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (unknown line)
gtk_init at /usr/bin/../lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (unknown line)
unknown function (ip: 0x7f0a838b9b37)
_ZN18QGuiPlatformPlugin19systemIconThemeNameEv at /usr/bin/../lib/x86_64-linux-gnu/libQtGui.so.4 (unknown line)
unknown function (ip: 0x7f0a835e1f24)
unknown function (ip: 0x7f0a835a703e)
unknown function (ip: 0x7f0a835ab2b1)
_ZN19QApplicationPrivate9constructEP9_XDisplaymm at /usr/bin/../lib/x86_64-linux-gnu/libQtGui.so.4 (unknown line)
_ZN12QApplicationC2ERiPPci at /usr/bin/../lib/x86_64-linux-gnu/libQtGui.so.4 (unknown line)
unknown function (ip: 0x7f0a84546f3e)
unknown function (ip: 0x7f0a84547131)
unknown function (ip: 0x7f0aa4aa3b4c)
unknown function (ip: 0x7f0a88a0868f)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a88a996d0)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a889917bd)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a88a996d0)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a889917bd)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a88a0a67f)
unknown function (ip: 0x7f0a88a0868f)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a88a997a5)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalFrameEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
PyEval_EvalCodeEx at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
unknown function (ip: 0x7f0a88a996d0)
PyObject_Call at /usr/bin/../lib/x86_64-linux-gnu/libpython2.7.so (unknown line)
pycall at /home/rdeits/.julia/v0.4/PyCall/src/exception.jl:78
figure at /home/rdeits/.julia/v0.4/PyPlot/src/PyPlot.jl:442
julia_figure_21540 at (unknown line)
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown line)
unknown function (ip: 0x7f0cadd8d683)
unknown function (ip: 0x7f0cadd8cac1)
unknown function (ip: 0x7f0cadda1ca8)
unknown function (ip: 0x7f0cadda2999)
jl_load at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown line)
include at ./boot.jl:261
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown line)
include_from_node1 at ./loading.jl:304
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown line)
process_options at ./client.jl:284
_start at ./client.jl:378
unknown function (ip: 0x7f0caa977f49)
jl_apply_generic at /usr/bin/../lib/x86_64-linux-gnu/julia/libjulia.so (unknown line)
unknown function (ip: 0x401b09)
unknown function (ip: 0x4016df)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401725)
unknown function (ip: (nil))
[1] 11038 segmentation fault (core dumped) julia test_segfault.jl
```

I came across this segfault while trying to use https://github.com/timholy/ProfileView.jl (which indirectly imports Gtk.jl) on a module that also used PyPlot.

Has anyone encountered this before?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Reproduce the issue with the Julia snippet importing PyPlot and Gtk, then inspect the figure entry point in PyPlot/src/PyPlot.jl:442 and the PyCall boundary at PyCall/src/exception.jl:78. Determine why Gtk and PyPlot's Qt-backed path conflict, and verify that calling figure() no longer segfaults in this combination.

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

Valutazione

Stack tecnologico
julia, python
Ambito
data-visualization, desktop
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
28/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.