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

server: python3 -c "import gdal; import numpy" Errore di segmentazione (core dump creato) #308

Closed
pat1 opened this issue Feb 17, 2020 · 0 comments
Assignees
Labels

Comments

@pat1
Copy link
Member

pat1 commented Feb 17, 2020

Da Emanuele:
Paolo ha segnalato un segfault su rmap sotto Centos8, che sono riuscito a riprodurre:

$ python3 -c "import gdal; import numpy"
Segmentation fault (core dumped)

La cosa succede solo se si importano entrambi due moduli e in quell'esatto ordine (quindi il problema può essere mitigato facendo un "import numpy" nel settings.py di rmap).

Il segmentation fault ha questo stacktrace, il problema pare essere nel cleanup di openblas all'uscita dell'interprete Python.

#0 0x0000000000005fc1 in ?? ()
#1 0x00007fffea7c1306 in blas_memory_cleanup.part () from /lib64/libopenblaso.so.0
#2 0x00007fffea7c1856 in blas_shutdown () from /lib64/libopenblaso.so.0
#3 0x00007fffea63a015 in gotoblas_quit () from /lib64/libopenblaso.so.0
#4 0x00007ffff7de4106 in _dl_fini () from /lib64/ld-linux-x86-64.so.2
#5 0x00007ffff6b4813c in __run_exit_handlers () from /lib64/libc.so.6
#6 0x00007ffff6b48270 in exit () from /lib64/libc.so.6
#7 0x00007ffff6b3187a in __libc_start_main () from /lib64/libc.so.6
#8 0x0000555555554dde in _start ()

Purtroppo, su centos8 non si riescono ad installare i simboli di debug né di Python3 né di openblas.

openblas è una dipendenza diretta di python3-numpy, mentre python3-gdal non lo richiede (e nemmeno gdal-libs). Ipotizzo che gdal chiuda male qualche risorsa che poi openblas (aperto da numpy) cerca di deallocare

Visto che il pacchetto gdal è quello di Fedora32, ho provato a riprodurlo, senza successo, su quest'ultima distribuzione. Giocando al gioco delle differenze:

Su Centos8
openblas 0.3.3-2
python36 3.6.8-2.module_el8.1.0+245+c39af44f
python3-gdal 2.3.2-14aSIMC
python3-numpy 1.14.3-9
Su Fedora32
openblas 0.3.7-2
python3 3.8.0~b4-1
python3-gdal 2.3.2-15
python3-numpy 1.18.1-1
Guardando il changelog di python3-gdal dalla release 14 alla 15 non mi pare che ci siano cambiamenti interessanti (tranne il doppio changelog):

  • Patch out include that was removed in newer poppler
  • Remove comment following an endif in the specfile
  • F-32: rebuild against new poppler

Facendo il diff del sorgente https://github.com/xianyi/OpenBLAS/blob/093d37de8d7fabc918ef4ff902f2ebec928510a2/driver/others/memory.c tra le due versioni (dove è definito blas_memory_cleanup) noto che qualcosa è cambiato, ma non quella funzione.

Pacchettizzare numpy e openblas autonomamente non mi sembra una via percorribile (potrebbe portare più problemi di quelli che risolve), propongo di attendere un aggiornamento di python3-numpy su Centos8 e vedere se il problema persiste - e nel frattempo usare l'import di numpy in testa al codice.

@pat1 pat1 added the bug label Feb 17, 2020
@pat1 pat1 self-assigned this Feb 17, 2020
@pat1 pat1 changed the title server: "import gdal; import numpy" Errore di segmentazione (core dump creato) server: python3 -c "import gdal; import numpy" Errore di segmentazione (core dump creato) Feb 17, 2020
@pat1 pat1 closed this as completed in c4aec0b Feb 17, 2020
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant