Dear Maintainer,
I could reproduce the issue inside a minimal stable VM.
It crashes with following backtrace [1].
This crash does not show up with the same input in current testing.
The resulting png file shows a "mesh" on top of a map.
The method GribDecoder::visit changed a bit [2].
Kind regards,
Bernhard
[1]
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f4f07840dce in magics::GribDecoder::visit (this=0x1b1f5e0,
transformation=...) at ./src/decoders/GribDecoder.cc:371
371 transformation.setMinMaxX(matrix_->minX(), matrix_->maxX());
(gdb) bt
#0 0x00007f4f07840dce in magics::GribDecoder::visit (this=0x1b1f5e0,
transformation=...) at ./src/decoders/GribDecoder.cc:371
#1 0x00007f4f0755a4f2 in magics::VisualAction::visit (this=0x1b1f440,
transformation=...) at /usr/include/c++/8/bits/locale_facets.h:877
#2 0x00007f4f07553cd4 in
magics::BasicSceneObject::dispatch<magics::Transformation> (visitor=...,
this=0x1b1d900) at /usr/include/c++/8/bits/stl_iterator.h:783
#3 magics::BasicSceneObject::visit (transformation=..., this=0x1b1d900) at
./src/basic/BasicSceneObject.h:135
#4 magics::ViewNode::visit (this=0x1b1d900, tree=...) at
./src/basic/ViewNode.cc:286
#5 0x00007f4f0753a92c in
magics::BasicSceneObject::dispatch<magics::SceneLayer> (visitor=...,
this=0x1b1d560) at ./src/common/Layout.h:237
#6 magics::FortranSceneNode::visit (this=0x1b1d560, tree=...) at
./src/basic/SceneNode.cc:134
#7 0x00007f4f07536e6b in
magics::BasicSceneObject::dispatch<magics::Layout> (visitor=...,
this=0x16e3c40) at /usr/include/c++/8/bits/stl_iterator.h:783
#8 magics::RootScenePage::visualise (this=0x16e3c40) at
./src/basic/RootSceneNode.cc:346
#9 0x00007f4f0753707a in magics::RootSceneNode::visualise (this=0x1a43240)
at ./src/basic/RootSceneNode.cc:331
#10 0x00007f4f075065d5 in magics::FortranMagics::dispatch
(this=this@entry=0x1b15740) at ./src/basic/FortranMagics.cc:509
#11 0x00007f4f075098c0 in magics::FortranMagics::pclose (this=0x1b15740) at
./src/basic/FortranMagics.cc:144
#12 0x00007f4f0747a27d in pclose_ () at ./src/common/MagicsCalls.cc:1085
...
(gdb) py-bt
Traceback (most recent call first):
File "/usr/lib/python3/dist-packages/Magics/Magics.py", line 181, in
finalize
return dll.mag_close()
File "/usr/lib/python3/dist-packages/Magics/Magics.py", line 149, in
wrapped
err = fn(*args)
File "/usr/lib/python3/dist-packages/Magics/macro.py", line 523, in _plot
Magics.finalize()
File "wflags-segfault.py", line 29, in <module>
(gdb) print this->matrix_
$4 = (magics::Matrix *) 0x0
https://sources.debian.org/src/magics++/3.3.1-1/src/decoders/GribDecoder.cc/#L371
[2]
https://sources.debian.org/src/magics++/4.6.0-2/src/decoders/GribDecoder.cc/#L406
# single-use Buster/stable amd64 qemu VM 2021-03-31
apt update
apt dist-upgrade
apt install systemd-coredump lightdm xserver-xorg openbox xterm mc gdb xygrib
magics++ python3-magics++ libeccodes-tools \
libeccodes0-dbgsym libmagplus3v5-dbgsym libffi6-dbg pyhton3-dbg
apt build-dep libeccodes0
mkdir /home/benutzer/source/eccodes/orig -p
cd /home/benutzer/source/eccodes/orig
apt source eccodes
cd
wget
"https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=985137;filename=wflags-segfault.tar.gz;msg=5"
-O wflags-segfault.tar.gz
tar -zxf wflags-segfault.tar.gz
benutzer@debian:~$ python3 wflags-segfault.py
Magics :------------------------------------------------------------------
Magics :
Magics : Magics 3.3.1 (64 bit)
Magics :
Magics : Meteorological Applications Graphics Integrated Colour System
Magics :
Magics : Developed By
Magics :
Magics : The European Centre for Medium-Range Weather Forecasts
Magics :
Magics :
Magics :------------------------------------------------------------------
Speicherzugriffsfehler (Speicherabzug geschrieben)
root@debian:~# coredumpctl list
TIME PID UID GID SIG COREFILE EXE
Thu 2021-04-01 18:26:33 CEST 21049 1000 1000 11 present /usr/bin/python3.7
root@debian:~# coredumpctl gdb 21049
PID: 21049 (python3)
UID: 1000 (benutzer)
GID: 1000 (benutzer)
Signal: 11 (SEGV)
Timestamp: Thu 2021-04-01 18:26:32 CEST (39s ago)
Command Line: python3 wflags-segfault.py
Executable: /usr/bin/python3.7
Control Group: /user.slice/user-1000.slice/session-5.scope
Unit: session-5.scope
Slice: user-1000.slice
Session: 5
Owner UID: 1000 (benutzer)
Boot ID: 13704ca5860b4e1ca1d50c521516559a
Machine ID: 33f18f39d2a9438eb75b0ed52848afcd
Hostname: debian
Storage:
/var/lib/systemd/coredump/core.python3.1000.13704ca5860b4e1ca1d50c521516559a.21049.1617294392000000.lz4
Message: Process 21049 (python3) of user 1000 dumped core.
Stack trace of thread 21049:
#0 0x00007f4f07840dce
_ZN6magics11GribDecoder5visitERNS_14TransformationE (libMagPlus.so.3)
#1 0x00007f4f0755a4f2
_ZN6magics12VisualAction5visitERNS_14TransformationE (libMagPlus.so.3)
#2 0x00007f4f07553cd4
_ZN6magics8ViewNode5visitERNS_10SceneLayerE (libMagPlus.so.3)
#3 0x00007f4f0753a92c
_ZN6magics16FortranSceneNode5visitERNS_28BasicGraphicsObjectContainerE
(libMagPlus.so.3)
#4 0x00007f4f07536e6b _ZN6magics13RootScenePage9visualiseEv
(libMagPlus.so.3)
#5 0x00007f4f0753707a _ZN6magics13RootSceneNode9visualiseEv
(libMagPlus.so.3)
#6 0x00007f4f075065d5 _ZN6magics13FortranMagics8dispatchEv
(libMagPlus.so.3)
#7 0x00007f4f075098c0 _ZN6magics13FortranMagics6pcloseEv
(libMagPlus.so.3)
#8 0x00007f4f0747a27d pclose_ (libMagPlus.so.3)
#9 0x00007f4f08e698ee ffi_call_unix64 (libffi.so.6)
#10 0x00007f4f08e692bf ffi_call (libffi.so.6)
#11 0x00007f4f096f50e3 _ctypes_callproc
(_ctypes.cpython-37m-x86_64-linux-gnu.so)
#12 0x00007f4f096f5533 n/a
(_ctypes.cpython-37m-x86_64-linux-gnu.so)
#13 0x00000000005da01b _PyObject_FastCallKeywords (python3.7)
#14 0x000000000054b3c1 n/a (python3.7)
#15 0x00000000005524cd _PyEval_EvalFrameDefault (python3.7)
#16 0x00000000005da536 _PyFunction_FastCallDict (python3.7)
#17 0x000000000054f987 _PyEval_EvalFrameDefault (python3.7)
#18 0x000000000054c328 _PyEval_EvalCodeWithName (python3.7)
#19 0x00000000005d94f2 _PyFunction_FastCallKeywords (python3.7)
#20 0x000000000054b1f0 n/a (python3.7)
#21 0x00000000005524cd _PyEval_EvalFrameDefault (python3.7)
#22 0x000000000054bcc2 _PyEval_EvalCodeWithName (python3.7)
#23 0x00000000005da6fe _PyFunction_FastCallDict (python3.7)
#24 0x000000000054f987 _PyEval_EvalFrameDefault (python3.7)
#25 0x000000000054bcc2 _PyEval_EvalCodeWithName (python3.7)
#26 0x000000000054e0a3 PyEval_EvalCode (python3.7)
#27 0x0000000000630ce2 n/a (python3.7)
#28 0x0000000000630d97 PyRun_FileExFlags (python3.7)
#29 0x00000000006319ff PyRun_SimpleFileExFlags (python3.7)
#30 0x000000000065432e n/a (python3.7)
#31 0x000000000065468e _Py_UnixMain (python3.7)
#32 0x00007f4f09b5009b __libc_start_main (libc.so.6)
#33 0x00000000005e0e8a _start (python3.7)
...
Core was generated by `python3 wflags-segfault.py'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f4f07840dce in magics::GribDecoder::visit(magics::Transformation&)
() from /lib/x86_64-linux-gnu/libMagPlus.so.3
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0 0x00007f4f07840dce in magics::GribDecoder::visit(magics::Transformation&)
() from /lib/x86_64-linux-gnu/libMagPlus.so.3
#1 0x00007f4f0755a4f2 in magics::VisualAction::visit(magics::Transformation&)
() from /lib/x86_64-linux-gnu/libMagPlus.so.3
#2 0x00007f4f07553cd4 in magics::ViewNode::visit(magics::SceneLayer&) () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#3 0x00007f4f0753a92c in
magics::FortranSceneNode::visit(magics::BasicGraphicsObjectContainer&) () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#4 0x00007f4f07536e6b in magics::RootScenePage::visualise() () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#5 0x00007f4f0753707a in magics::RootSceneNode::visualise() () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#6 0x00007f4f075065d5 in magics::FortranMagics::dispatch() () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#7 0x00007f4f075098c0 in magics::FortranMagics::pclose() () from
/lib/x86_64-linux-gnu/libMagPlus.so.3
#8 0x00007f4f0747a27d in pclose_ () from /lib/x86_64-linux-gnu/libMagPlus.so.3
#9 0x00007f4f08e698ee in ffi_call_unix64 () from
/lib/x86_64-linux-gnu/libffi.so.6
#10 0x00007f4f08e692bf in ffi_call () from /lib/x86_64-linux-gnu/libffi.so.6
#11 0x00007f4f096f50e3 in _ctypes_callproc () from
/usr/lib/python3.7/lib-dynload/_ctypes.cpython-37m-x86_64-linux-gnu.so
#12 0x00007f4f096f5533 in ?? () from
/usr/lib/python3.7/lib-dynload/_ctypes.cpython-37m-x86_64-linux-gnu.so
#13 0x00000000005da01b in _PyObject_FastCallKeywords ()
#14 0x000000000054b3c1 in ?? ()
#15 0x00000000005524cd in _PyEval_EvalFrameDefault ()
#16 0x00000000005da536 in _PyFunction_FastCallDict ()
#17 0x000000000054f987 in _PyEval_EvalFrameDefault ()
#18 0x000000000054c328 in _PyEval_EvalCodeWithName ()
#19 0x00000000005d94f2 in _PyFunction_FastCallKeywords ()
#20 0x000000000054b1f0 in ?? ()
#21 0x00000000005524cd in _PyEval_EvalFrameDefault ()
#22 0x000000000054bcc2 in _PyEval_EvalCodeWithName ()
#23 0x00000000005da6fe in _PyFunction_FastCallDict ()
#24 0x000000000054f987 in _PyEval_EvalFrameDefault ()
#25 0x000000000054bcc2 in _PyEval_EvalCodeWithName ()
#26 0x000000000054e0a3 in PyEval_EvalCode ()
#27 0x0000000000630ce2 in ?? ()
#28 0x0000000000630d97 in PyRun_FileExFlags ()
#29 0x00000000006319ff in PyRun_SimpleFileExFlags ()
#30 0x000000000065432e in ?? ()
#31 0x000000000065468e in _Py_UnixMain ()
#32 0x00007f4f09b5009b in __libc_start_main (main=0x4bc560 <main>, argc=2,
argv=0x7ffe105eb658, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7ffe105eb648) at ../csu/libc-start.c:308
#33 0x00000000005e0e8a in _start ()
Core was generated by `python3 wflags-segfault.py'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f4f07840dce in magics::GribDecoder::visit (this=0x1b1f5e0,
transformation=...) at ./src/decoders/GribDecoder.cc:371
371 transformation.setMinMaxX(matrix_->minX(), matrix_->maxX());
(gdb) set width 0
(gdb) set pagination off
(gdb) bt
#0 0x00007f4f07840dce in magics::GribDecoder::visit (this=0x1b1f5e0,
transformation=...) at ./src/decoders/GribDecoder.cc:371
#1 0x00007f4f0755a4f2 in magics::VisualAction::visit (this=0x1b1f440,
transformation=...) at /usr/include/c++/8/bits/locale_facets.h:877
#2 0x00007f4f07553cd4 in
magics::BasicSceneObject::dispatch<magics::Transformation> (visitor=...,
this=0x1b1d900) at /usr/include/c++/8/bits/stl_iterator.h:783
#3 magics::BasicSceneObject::visit (transformation=..., this=0x1b1d900) at
./src/basic/BasicSceneObject.h:135
#4 magics::ViewNode::visit (this=0x1b1d900, tree=...) at
./src/basic/ViewNode.cc:286
#5 0x00007f4f0753a92c in
magics::BasicSceneObject::dispatch<magics::SceneLayer> (visitor=...,
this=0x1b1d560) at ./src/common/Layout.h:237
#6 magics::FortranSceneNode::visit (this=0x1b1d560, tree=...) at
./src/basic/SceneNode.cc:134
#7 0x00007f4f07536e6b in magics::BasicSceneObject::dispatch<magics::Layout>
(visitor=..., this=0x16e3c40) at /usr/include/c++/8/bits/stl_iterator.h:783
#8 magics::RootScenePage::visualise (this=0x16e3c40) at
./src/basic/RootSceneNode.cc:346
#9 0x00007f4f0753707a in magics::RootSceneNode::visualise (this=0x1a43240) at
./src/basic/RootSceneNode.cc:331
#10 0x00007f4f075065d5 in magics::FortranMagics::dispatch
(this=this@entry=0x1b15740) at ./src/basic/FortranMagics.cc:509
#11 0x00007f4f075098c0 in magics::FortranMagics::pclose (this=0x1b15740) at
./src/basic/FortranMagics.cc:144
#12 0x00007f4f0747a27d in pclose_ () at ./src/common/MagicsCalls.cc:1085
#13 0x00007f4f08e698ee in ffi_call_unix64 () at ../src/x86/unix64.S:76
#14 0x00007f4f08e692bf in ffi_call (cif=<optimized out>, fn=<optimized out>,
rvalue=<optimized out>, avalue=<optimized out>) at ../src/x86/ffi64.c:525
#15 0x00007f4f096f50e3 in _call_function_pointer (argcount=0,
resmem=0x7ffe105ea7c0, restype=<optimized out>, atypes=<optimized out>,
avalues=0x7ffe105ea7b0, pProc=0x7f4f0747a500 <mag_close()>, flags=4353) at
./Modules/_ctypes/callproc.c:814
#16 _ctypes_callproc (pProc=0x7f4f0747a500 <mag_close()>, argtuple=<optimized
out>, flags=4353, argtypes=<optimized out>, restype=<_ctypes.PyCSimpleType at
remote 0x172ef58>, checker=0x0) at ./Modules/_ctypes/callproc.c:1171
#17 0x00007f4f096f5533 in PyCFuncPtr_call (self=0x7f4f07babc00, inargs=(),
kwds=0x0) at ./Modules/_ctypes/_ctypes.c:3969
#18 0x00000000005da01b in _PyObject_FastCallKeywords
(callable=<_FuncPtr(__name__='mag_close') at remote 0x7f4f07babc00>,
stack=0x7f4f080e6820, nargs=<optimized out>, kwnames=<optimized out>) at
../Objects/call.c:201
#19 0x000000000054b3c1 in call_function (pp_stack=0x7ffe105eaa80,
oparg=<optimized out>, kwnames=<optimized out>) at ../Python/ceval.c:4619
#20 0x00000000005524cd in _PyEval_EvalFrameDefault (f=<optimized out>,
throwflag=<optimized out>) at ../Python/ceval.c:3093
#21 0x00000000005da536 in PyEval_EvalFrameEx (throwflag=0, f=Frame
0x7f4f080e66a8, for file /usr/lib/python3/dist-packages/Magics/Magics.py, line
181, in finalize ()) at ../Python/ceval.c:547
#22 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>,
args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#23 _PyFunction_FastCallDict (func=<optimized out>, args=<optimized out>,
nargs=<optimized out>, kwargs=<optimized out>) at ../Objects/call.c:322
#24 0x000000000054f987 in do_call_core (kwdict=0x0, callargs=(), func=<function
at remote 0x7f4f07ba38c8>) at ../Python/ceval.c:4645
#25 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:3191
#26 0x000000000054c328 in PyEval_EvalFrameEx (throwflag=0, f=Frame
0x7f4f07f4f708, for file /usr/lib/python3/dist-packages/Magics/Magics.py, line
149, in wrapped (args=())) at ../Python/ceval.c:547
#27 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=<optimized out>,
kwnames=0x0, kwargs=0x7f4f096ab1d8, kwcount=<optimized out>, kwstep=1,
defs=0x0, defcount=0, kwdefs=0x0, closure=(<cell at remote 0x7f4f07f62468>,),
name='wrapped', qualname='checked_return_code.<locals>.wrapped') at
../Python/ceval.c:3930
#28 0x00000000005d94f2 in _PyFunction_FastCallKeywords (func=<optimized out>,
stack=0x7f4f096ab1d8, nargs=0, kwnames=<optimized out>) at ../Objects/call.c:433
#29 0x000000000054b1f0 in call_function (pp_stack=0x7ffe105eaf00,
oparg=<optimized out>, kwnames=<optimized out>) at ../Python/ceval.c:4616
#30 0x00000000005524cd in _PyEval_EvalFrameDefault (f=<optimized out>,
throwflag=<optimized out>) at ../Python/ceval.c:3093
#31 0x000000000054bcc2 in PyEval_EvalFrameEx (throwflag=0, f=Frame
0x7f4f096ab048, for file /usr/lib/python3/dist-packages/Magics/macro.py, line
523, in _plot (args=(<Action(verb='output', action=None,
args={'output_formats': ['png'], 'output_name': 'wflags-segfault',
'output_name_first_page_number': 'off'}, html="<a href=/wiki/display/MAGP/PNG
Output target='_blank'>output</a>") at remote 0x7f4f096b1048>,
<Action(verb='mmap', action=None, args={'subpage_map_projection':
'cylindrical', 'subpage_lower_left_longitude': <float at remote
0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at remote
0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>mmap</a>") at remote 0x7f4f096b1080>, <Action(verb='mcoast',
action=<_FuncPtr(__name__='mag_coast') at remote 0x7f4f07b742a0>,
args={'map_coastline_general_style': 'background'}, html="<a
href=/wiki/display/MAGP/Coastlines target='_blank'>mcoast</a>") at remote
0x7f4f096b...(truncated)) at ../Python/ceval.c:547
#32 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=<optimized out>,
kwnames=0x0, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0,
defcount=0, kwdefs=0x0, closure=0x0, name='_plot', qualname='_plot') at
../Python/ceval.c:3930
#33 0x00000000005da6fe in _PyFunction_FastCallDict (func=<optimized out>,
args=<optimized out>, nargs=7, kwargs=<optimized out>) at ../Objects/call.c:367
#34 0x000000000054f987 in do_call_core (kwdict=0x0,
callargs=(<Action(verb='output', action=None, args={'output_formats': ['png'],
'output_name': 'wflags-segfault', 'output_name_first_page_number': 'off'},
html="<a href=/wiki/display/MAGP/PNG Output target='_blank'>output</a>") at
remote 0x7f4f096b1048>, <Action(verb='mmap', action=None,
args={'subpage_map_projection': 'cylindrical', 'subpage_lower_left_longitude':
<float at remote 0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at
remote 0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>mmap</a>") at remote 0x7f4f096b1080>, <Action(verb='mcoast',
action=<_FuncPtr(__name__='mag_coast') at remote 0x7f4f07b742a0>,
args={'map_coastline_general_style': 'background'}, html="<a
href=/wiki/display/MAGP/Coastlines target='_blank'>mcoast</a>") at remote
0x7f4f096b10b8>, <Action(verb='mgrib', action=<_FuncPtr(__name__='mag_grib') at
remote 0x7f4f07b74368>, args={'gri...(truncated), func=<function at remote
0x7f4f07bb1a60>) at ../Python/ceval.c:4645
#35 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:3191
#36 0x000000000054bcc2 in PyEval_EvalFrameEx (throwflag=0, f=Frame
0x7f4f097e19f8, for file wflags-segfault.py, line 29, in <module> ()) at
../Python/ceval.c:547
#37 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=<optimized out>,
kwnames=0x0, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0,
defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at
../Python/ceval.c:3930
#38 0x000000000054e0a3 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0,
defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0,
locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at
../Python/ceval.c:3959
#39 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>,
locals=<optimized out>) at ../Python/ceval.c:524
#40 0x0000000000630ce2 in run_mod (mod=<optimized out>, filename=<optimized
out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <SourceFileLoader(name='__main__', path='wflags-segfault.py') at
remote 0x7f4f09773fd0>, '__spec__': None, '__annotations__': {},
'__builtins__': <module at remote 0x7f4f09838c28>, '__file__':
'wflags-segfault.py', '__cached__': None, 'macro': <module at remote
0x7f4f096ad368>, 'output': <Action(verb='output', action=None,
args={'output_formats': ['png'], 'output_name': 'wflags-segfault',
'output_name_first_page_number': 'off'}, html="<a href=/wiki/display/MAGP/PNG
Output target='_blank'>output</a>") at remote 0x7f4f096b1048>, 'parts':
[<Action(verb='mmap', action=None, args={'subpage_map_projection':
'cylindrical', 'subpage_lower_left_longitude': <float at remote
0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at remote
0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>m...(truncated), locals={'__name__': '__main__', '__doc__':
None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__',
path='wflags-segfault.py') at remote 0x7f4f09773fd0>, '__spec__': None,
'__annotations__': {}, '__builtins__': <module at remote 0x7f4f09838c28>,
'__file__': 'wflags-segfault.py', '__cached__': None, 'macro': <module at
remote 0x7f4f096ad368>, 'output': <Action(verb='output', action=None,
args={'output_formats': ['png'], 'output_name': 'wflags-segfault',
'output_name_first_page_number': 'off'}, html="<a href=/wiki/display/MAGP/PNG
Output target='_blank'>output</a>") at remote 0x7f4f096b1048>, 'parts':
[<Action(verb='mmap', action=None, args={'subpage_map_projection':
'cylindrical', 'subpage_lower_left_longitude': <float at remote
0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at remote
0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>m...(truncated), flags=<optimized out>, arena=<optimized out>)
at ../Python/pythonrun.c:1035
#41 0x0000000000630d97 in PyRun_FileExFlags (fp=0x1672290,
filename_str=<optimized out>, start=<optimized out>, globals={'__name__':
'__main__', '__doc__': None, '__package__': None, '__loader__':
<SourceFileLoader(name='__main__', path='wflags-segfault.py') at remote
0x7f4f09773fd0>, '__spec__': None, '__annotations__': {}, '__builtins__':
<module at remote 0x7f4f09838c28>, '__file__': 'wflags-segfault.py',
'__cached__': None, 'macro': <module at remote 0x7f4f096ad368>, 'output':
<Action(verb='output', action=None, args={'output_formats': ['png'],
'output_name': 'wflags-segfault', 'output_name_first_page_number': 'off'},
html="<a href=/wiki/display/MAGP/PNG Output target='_blank'>output</a>") at
remote 0x7f4f096b1048>, 'parts': [<Action(verb='mmap', action=None,
args={'subpage_map_projection': 'cylindrical', 'subpage_lower_left_longitude':
<float at remote 0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at
remote 0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>m...(truncated), locals={'__name__': '__main__', '__doc__':
None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__',
path='wflags-segfault.py') at remote 0x7f4f09773fd0>, '__spec__': None,
'__annotations__': {}, '__builtins__': <module at remote 0x7f4f09838c28>,
'__file__': 'wflags-segfault.py', '__cached__': None, 'macro': <module at
remote 0x7f4f096ad368>, 'output': <Action(verb='output', action=None,
args={'output_formats': ['png'], 'output_name': 'wflags-segfault',
'output_name_first_page_number': 'off'}, html="<a href=/wiki/display/MAGP/PNG
Output target='_blank'>output</a>") at remote 0x7f4f096b1048>, 'parts':
[<Action(verb='mmap', action=None, args={'subpage_map_projection':
'cylindrical', 'subpage_lower_left_longitude': <float at remote
0x7f4f0983f1c8>, 'subpage_lower_left_latitude': <float at remote
0x7f4f0983f180>, 'subpage_upper_right_longitude': <float at remote
0x7f4f0983f0c0>, 'subpage_upper_right_latitude': <float at remote
0x7f4f0983f270>}, html="<a href=/wiki/display/MAGP/Subpage
target='_blank'>m...(truncated), closeit=1, flags=0x7ffe105eb43c) at
../Python/pythonrun.c:988
#42 0x00000000006319ff in PyRun_SimpleFileExFlags (fp=0x1672290,
filename=<optimized out>, closeit=1, flags=0x7ffe105eb43c) at
../Python/pythonrun.c:429
#43 0x000000000065432e in pymain_run_file (p_cf=0x7ffe105eb43c,
filename=<optimized out>, fp=0x1672290) at ../Modules/main.c:427
#44 pymain_run_filename (cf=0x7ffe105eb43c, pymain=0x7ffe105eb510) at
../Modules/main.c:1627
#45 pymain_run_python (pymain=0x7ffe105eb510) at ../Modules/main.c:2877
#46 pymain_main (pymain=<optimized out>, pymain=<optimized out>) at
../Modules/main.c:3038
#47 0x000000000065468e in _Py_UnixMain (argc=<optimized out>, argv=<optimized
out>) at ../Modules/main.c:3073
#48 0x00007f4f09b5009b in __libc_start_main (main=0x4bc560 <main>, argc=2,
argv=0x7ffe105eb658, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7ffe105eb648) at ../csu/libc-start.c:308
#49 0x00000000005e0e8a in _start () at ../Modules/main.c:797
(gdb) disassemble
Dump of assembler code for function
magics::GribDecoder::visit(magics::Transformation&):
0x00007f4f07840d70 <+0>: push %r12
0x00007f4f07840d72 <+2>: push %rbp
0x00007f4f07840d73 <+3>: mov %rdi,%rbp
0x00007f4f07840d76 <+6>: push %rbx
0x00007f4f07840d77 <+7>: mov %rsi,%rbx
0x00007f4f07840d7a <+10>: sub $0x10,%rsp
0x00007f4f07840d7e <+14>: mov (%rdi),%rax
0x00007f4f07840d81 <+17>: callq *0x10(%rax)
0x00007f4f07840d84 <+20>: mov 0x8(%rbx),%eax
0x00007f4f07840d87 <+23>: test %eax,%eax
0x00007f4f07840d89 <+25>: mov (%rbx),%rax
0x00007f4f07840d8c <+28>: je 0x7f4f07840dc0
<magics::GribDecoder::visit(magics::Transformation&)+80>
0x00007f4f07840d8e <+30>: mov 0x1a0(%rax),%rdx
0x00007f4f07840d95 <+37>: cmp 0x2db18c(%rip),%rdx #
0x7f4f07b1bf28
0x00007f4f07840d9c <+44>: jne 0x7f4f07840ec0
<magics::GribDecoder::visit(magics::Transformation&)+336>
0x00007f4f07840da2 <+50>: mov 0x1a8(%rax),%rax
0x00007f4f07840da9 <+57>: cmp 0x2de3c8(%rip),%rax #
0x7f4f07b1f178
0x00007f4f07840db0 <+64>: jne 0x7f4f07840f1c
<magics::GribDecoder::visit(magics::Transformation&)+428>
0x00007f4f07840db6 <+70>: add $0x10,%rsp
0x00007f4f07840dba <+74>: pop %rbx
0x00007f4f07840dbb <+75>: pop %rbp
0x00007f4f07840dbc <+76>: pop %r12
0x00007f4f07840dbe <+78>: retq
0x00007f4f07840dbf <+79>: nop
0x00007f4f07840dc0 <+80>: mov 0x340(%rbp),%rdi
0x00007f4f07840dc7 <+87>: mov 0x240(%rax),%r12
=> 0x00007f4f07840dce <+94>: mov (%rdi),%rax
0x00007f4f07840dd1 <+97>: mov 0xe8(%rax),%rdx
0x00007f4f07840dd8 <+104>: cmp 0x2dd881(%rip),%rdx #
0x7f4f07b1e660
...
(gdb) display/i $pc
1: x/i $pc
=> 0x7f4f07840dce <magics::GribDecoder::visit(magics::Transformation&)+94>:
mov (%rdi),%rax
(gdb) print/x $rdi
$1 = 0x0
(gdb) print/x $rbp
$2 = 0x1b1f5e0
(gdb) x/1xg $rbp + 0x340
0x1b1f920: 0x0000000000000000
(gdb) info share
From To Syms Read Shared Object Library
0x00007f4f07170c80 0x00007f4f078d2d35 Yes
/lib/x86_64-linux-gnu/libMagPlus.so.3
...
# dpkg -S /usr/lib/x86_64-linux-gnu/libMagPlus.so.3
libmagplus3v5:amd64: /usr/lib/x86_64-linux-gnu/libMagPlus.so.3
# dpkg -l | grep libmagplus3v5
ii libmagplus3v5:amd64 3.3.1-1 amd64
ECMWF meteorological plotting software library
https://sources.debian.org/src/magics++/3.3.1-1/src/decoders/GribDecoder.cc/#L371
(gdb) print &this->matrix_
$3 = (magics::Matrix **) 0x1b1f920
(gdb) print this->matrix_
$4 = (magics::Matrix *) 0x0
(gdb) print this->xComponent_
$5 = (magics::Matrix *) 0x1c478b0
set width 0
set pagination off
bt
############
# single-use Bullseye/testing amd64 qemu VM 2021-04-02
apt update
apt dist-upgrade
apt install systemd-coredump lightdm xserver-xorg openbox xterm mc gdb xygrib
magics++ python3-magics++ libeccodes-tools \
libeccodes0-dbgsym libmagplus3v5-dbgsym
benutzer@debian:~$ python3 wflags-segfault.py
benutzer@debian:~$