modularml / mojo

The Mojo Programming Language
https://docs.modular.com/mojo
Other
22.26k stars 2.55k forks source link

[BUG]: Segmentation fault elf_dynamic_array_reader.h:64 #1776

Open gamendez98 opened 4 months ago

gamendez98 commented 4 months ago

Bug description

I get a segmentation fault core dumped when I run code that imports a python module. this is the backtrace:

[21736:21736:20240218,114324.648193:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648327:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648354:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648379:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648404:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648427:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648455:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648479:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648531:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648556:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648581:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648605:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648633:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648659:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648684:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648713:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648738:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648762:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648808:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648833:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648856:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648882:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648907:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648932:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648963:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.648989:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649014:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649038:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649063:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649085:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649109:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649132:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649177:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649222:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649246:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649268:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649294:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649317:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649364:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649389:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649418:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649558:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.649989:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650014:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650036:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650059:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650082:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650119:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650141:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650162:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650202:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650227:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650249:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650274:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650297:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650322:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650340:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650364:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650389:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650412:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650437:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650460:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650485:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650508:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650533:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650556:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650579:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650603:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650626:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650650:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650673:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650697:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650720:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650743:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650766:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650789:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650813:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650836:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650869:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650892:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650914:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650935:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650958:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.650979:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651002:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651024:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651047:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651068:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651091:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651112:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651134:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651157:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651180:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651203:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651225:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651247:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651268:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651292:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651314:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651336:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651357:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651379:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651401:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651421:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651443:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651465:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651486:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651505:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651527:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651548:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651569:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651589:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651611:ERROR elf_dynamic_array_reader.h:64] tag not found
[21736:21736:20240218,114324.651632:ERROR elf_dynamic_array_reader.h:64] tag not found
Please submit a bug report to https://github.com/modularml/mojo/issues and include the crash backtrace along with all the relevant source codes.
Stack dump:
0.      Program arguments: mojo spacy_test.mojo
#0 0x0000561b5320d337 (/home/gustavo/.modular/pkg/packages.modular.com_mojo/bin/mojo+0x621337)
#1 0x0000561b5320af0e (/home/gustavo/.modular/pkg/packages.modular.com_mojo/bin/mojo+0x61ef0e)
#2 0x0000561b5320da0f (/home/gustavo/.modular/pkg/packages.modular.com_mojo/bin/mojo+0x621a0f)
#3 0x00007ffa9345c710 (/usr/lib/libc.so.6+0x3e710)
#4 0x00007ffa7c548545 (/usr/lib/libpython3.10.so+0x148545)
#5 0x00007ffa7c5483cb (/usr/lib/libpython3.10.so+0x1483cb)
#6 0x00007ff9f401fd1b 
zsh: segmentation fault (core dumped)  mojo spacy_test.mojo

Steps to reproduce

Run the file:

#spacy_test.mojo
from python import Python

fn attribute_accesor[chain_len: Int, *attr_chain: String](owned obj :PythonObject) raises -> PythonObject:
    let py = Python.import_module('builtins')
    for i in range(chain_len):
        obj = py.getattr(obj, attr_chain[i], None)
    return obj

fn main() raises:
    let spacy = Python.import_module('spacy')
    let py = Python.import_module('builtins')
    let nlp = spacy.load('en_core_web_trf')
    let doc = nlp("This is a test.")
    print(attribute_accesor[2, "morph", "key"](doc[1]))

with mojo spacy_test.mojo

System information

OS: Manjaro Linux x86_64
Kernel: 6.1.71-1-MANJARO
mojo 0.7.0 (af002202)
modular 0.4.1 (2d8afe15)

Additionally I got this error with python3.10 and python3.11
RtyLiu commented 4 months ago

I am new here, but what I thing is, that is not an error in Mojo here. I made small changes (StringLiteral and getattr):

fn attribute_accesor[chain_len: Int, *attr_chain: StringLiteral](owned obj :PythonObject) raises -> PythonObject:
    let py = Python.import_module('builtins')
    for i in range(chain_len):
        obj = obj.__getattr__(attr_chain[i])
    return obj

and it gives me this: 6409445096646039388 (I do now know what it is :) )

gamendez98 commented 4 months ago

Thanks! @RtyLiu It worked like a charm, I am still confused that it does not fail in compile time since parametrization is supopse to happen then

soraros commented 4 months ago

@RtyLiu Do you know why the fix worked? Do you have some principled explanation as why the original code with py.getattr didn't work, or you simply tried different things?

RtyLiu commented 4 months ago

Sorry, new here :). Suppose something about PythonObject (wrapper, mojo struct) vs python object. The path from version 0.7 to 1.0 will be not easy.