JuliaPy / JuliaPy/PyPlot.jl

Segfault in figure() when package Gtk imported

Offen
#199 4 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Julia
Sterne
488
Forks
90
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
julia, python
Bereich
data-visualization, desktop
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
28/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.