JuliaPy / JuliaPy/PyCall.jl

Segmentation fault ( Pycall [BUG] Segmentation fault at 0x0000000000000010 )

Offen
#1,082 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Julia
Sterne
1.5k
Forks
186
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

there is problem in the method import_module of file "pycall-1.5.2/lib/pycall.rb"

def import_module(name)
LibPython::Helpers.import_module(name)
end

it calls a c method in this file "ext/pycall/pycall.c"

# c language method
static VALUE
pycall_libpython_helpers_m_import_module(int argc, VALUE *argv, VALUE mod)
{
VALUE name, globals, locals, fromlist, level;
char const *name_cstr;

rb_scan_args(argc, argv, "14", &name, &globals, &locals, &fromlist, &level);

if (RB_TYPE_P(name, T_SYMBOL)) {
name = rb_sym_to_s(name);
}

name_cstr = StringValueCStr(name);

if (argc == 1) {
return pycall_import_module(name_cstr);
}

if (argc == 5) {
level = rb_check_to_integer(level, "to_int");
}
else {
/* TODO: set the default level to 0 */
}

return pycall_import_module_level(name_cstr, globals, locals, fromlist, NUM2INT(level));
}

which again calls the previous method and the process continues in an infinite loop, hence segmentation fault occurs

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Lies pycall-1.5.2/lib/pycall.rb und die entsprechende Importimplementierung in ext/pycall/pycall.c. Beginne damit, den Aufruf von import_module zu reproduzieren und den nativen Aufrufpfad nachzuverfolgen; abgeschlossen ist die Aufgabe, wenn der segmentation fault und die behauptete Rekursion erklärt sind und ein Regressionstest das Verhalten abdeckt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, julia, python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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