Bug#981128: libgmsh4: SIGABRT in dolfinx demo from gmsh polynomialBasis via Eigen::compute_inverse
Bernhard Übelacker
bernhardu at mailbox.org
Fri Feb 12 10:37:18 GMT 2021
Dear Maintainer,
I tried to have a look at this issue and I saw
that the allocation takes place inside libdolfinx_real.so.2019.2,
inside /usr/include/eigen3/Eigen/src/Core/util/Memory.h.
But the failing free is done in libgmsh.so.4.7,
which uses ./contrib/eigen/Eigen/src/Core/util/Memory.h.
There seem to be a disagreement if the allocator is
already returning aligned addresses,
therefore one uses handmade_aligned_malloc,
but the free uses directly std::free() instead handmade_aligned_free.
Might this cause the issue?
Kind regards,
Bernhard
Allocation:
(rr) bt
#0 0x00007f2860acc19d in __GI___libc_malloc (bytes=<optimized out>) at malloc.c:3082
#1 0x00007f285e7d2bdb in Eigen::internal::handmade_aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:88
#2 Eigen::internal::aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:164
#3 Eigen::internal::conditional_aligned_malloc<true> (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:214
#4 Eigen::internal::conditional_aligned_new_auto<int, true> (size=4) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:374
#5 Eigen::DenseStorage<int, -1, -1, 1, 0>::resize (rows=4, size=4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:557
...
Free:
(rr) bt
#0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007f2860a67537 in __GI_abort () at abort.c:79
#2 0x00007f2860ac0768 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f2860bcee31 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#3 0x00007f2860ac7a5a in malloc_printerr (str=str at entry=0x7f2860bd1210 "double free or corruption (out)") at malloc.c:5347
#4 0x00007f2860ac9088 in _int_free (av=0x7f2860c00b80 <main_arena>, p=0x23cb2f0, have_lock=<optimized out>) at malloc.c:4314
#5 0x00007f2851183ad8 in Eigen::internal::aligned_free (ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:177
#6 Eigen::internal::conditional_aligned_free<true> (ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:230
#7 Eigen::internal::conditional_aligned_delete_auto<int, true> (size=<optimized out>, ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:416
#8 Eigen::DenseStorage<int, -1, -1, 1, 0>::~DenseStorage (this=0x7ffe74198f58, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/Core/DenseStorage.h:542
...
-------------- next part --------------
# Bullseye amd64 qemu VM 2021-02-11
apt update
apt dist-upgrade
apt install systemd-coredump valgrind mc rr gdb dolfinx-doc python3-gmsh
apt build-dep libc6
apt install libgmsh4-dbgsym libdolfinx-real2019.2-dbgsym
echo 1 > /proc/sys/kernel/perf_event_paranoid
mkdir /home/benutzer/source/libc6/orig -p
cd /home/benutzer/source/libc6/orig
apt source libc6
cd
mkdir /home/benutzer/source/libgmsh4/orig -p
cd /home/benutzer/source/libgmsh4/orig
apt source libgmsh4
cd
$ rr record python3 /usr/share/dolfinx/demo-python/gmsh/demo_gmsh.py
rr: Saving execution to trace directory `/home/benutzer/.local/share/rr/python3-0'.
double free or corruption (out)
Loguru caught a signal: SIGABRT
Abgebrochen
$ rr replay python3-0
GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/python3.9...
(No debugging symbols found in /usr/bin/python3.9)
Really redefine built-in command "restart"? (y or n) [answered Y; input not from terminal]
Remote debugging using 127.0.0.1:22636
Reading symbols from /lib64/ld-linux-x86-64.so.2...
Reading symbols from /usr/lib/debug/.build-id/5b/e47e85c990f390b0dccb6ca9dc3e70f410dc6a.debug...
0x00007f2860de8090 in _start () from /lib64/ld-linux-x86-64.so.2
(rr) directory /home/benutzer/source/libc6/orig/glibc-2.31/malloc
Source directories searched: /home/benutzer/source/libc6/orig/glibc-2.31/malloc:$cdir:$cwd
(rr) directory /home/benutzer/source/libgmsh4/orig/gmsh-4.7.1+ds1
Source directories searched: /home/benutzer/source/libgmsh4/orig/gmsh-4.7.1+ds1:/home/benutzer/source/libc6/orig/glibc-2.31/malloc:$cdir:$cwd
(rr) set width 0
(rr) set pagination off
(rr) cont
Continuing.
double free or corruption (out)
[New Thread 10825.10830]
[New Thread 10825.10831]
Thread 1 received signal SIGABRT, Aborted.
__GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 return ret;
(rr) when
Current event: 16792
(rr) bt
#0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007f2860a67537 in __GI_abort () at abort.c:79
#2 0x00007f2860ac0768 in __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f2860bcee31 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#3 0x00007f2860ac7a5a in malloc_printerr (str=str at entry=0x7f2860bd1210 "double free or corruption (out)") at malloc.c:5347
#4 0x00007f2860ac9088 in _int_free (av=0x7f2860c00b80 <main_arena>, p=0x23cb2f0, have_lock=<optimized out>) at malloc.c:4314
#5 0x00007f2851183ad8 in Eigen::internal::aligned_free (ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:177
#6 Eigen::internal::conditional_aligned_free<true> (ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:230
#7 Eigen::internal::conditional_aligned_delete_auto<int, true> (size=<optimized out>, ptr=<optimized out>) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:416
#8 Eigen::DenseStorage<int, -1, -1, 1, 0>::~DenseStorage (this=0x7ffe74198f58, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/Core/DenseStorage.h:542
#9 Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >::~PlainObjectBase (this=0x7ffe74198f58, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/Core/PlainObjectBase.h:98
#10 Eigen::Matrix<int, -1, 1, 0, -1, 1>::~Matrix (this=0x7ffe74198f58, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/Core/Matrix.h:178
#11 Eigen::Transpositions<-1, -1, int>::~Transpositions (this=0x7ffe74198f58, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/Core/Transpositions.h:158
#12 Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::~PartialPivLU (this=0x7ffe74198f30, __in_chrg=<optimized out>) at ./contrib/eigen/Eigen/src/LU/PartialPivLU.h:75
#13 Eigen::internal::compute_inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, -1>::run (matrix=..., result=...) at ./contrib/eigen/Eigen/src/LU/InverseImpl.h:28
#14 0x00007f285118974f in Eigen::internal::Assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run (src=..., dst=...) at ./contrib/eigen/Eigen/src/LU/InverseImpl.h:310
#15 Eigen::internal::call_assignment_no_alias<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double> > (func=..., src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:836
#16 Eigen::internal::call_assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double> >(Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >&, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > const&, Eigen::internal::assign_op<double, double> const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::evaluator_traits<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > >::Shape>::value, void*>::type) (func=..., src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:804
#17 Eigen::internal::call_assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > > (src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:782
#18 Eigen::MatrixBase<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >::operator=<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > > (other=..., this=0x7ffe74199160) at ./contrib/eigen/Eigen/src/Core/Assign.h:66
#19 fullMatrix<double>::invert (result=..., this=0x7ffe74199100) at ./Numeric/fullMatrix.h:650
#20 (anonymous namespace)::generateLagrangeMonomialCoefficients (point=..., monomial=...) at ./Numeric/polynomialBasis.cpp:46
#21 polynomialBasis::polynomialBasis (this=0x20c8690, tag=<optimized out>) at ./Numeric/polynomialBasis.cpp:104
#22 0x00007f28510f1bca in gmsh::model::mesh::getElementProperties (elementType=4, name=..., dim=@0x7f285eba5590: 0, order=@0x7f285eba5610: 0, numNodes=@0x7f285eba5710: 0, localNodeCoord=std::vector of length 0, capacity 0, numPrimaryNodes=@0x7f285eba5f90: 0) at ./Common/gmsh.cpp:1841
#23 0x00007f2851cab640 in gmshModelMeshGetElementProperties (elementType=<optimized out>, elementName=0x7f285eba5510, dim=<optimized out>, order=<optimized out>, numNodes=<optimized out>, localNodeCoord=0x7f285eba5790, localNodeCoord_n=0x7f285eba5890, numPrimaryNodes=0x7f285eba5f90, ierr=0x7f285ebbf090) at ./api/gmshc.cpp:1124
#24 0x00007f285fcb8d1d in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#25 0x00007f285fcb8289 in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#26 0x00007f285fcd1340 in ?? () from /usr/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so
#27 0x00007f285fcc78d6 in ?? () from /usr/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so
#28 0x000000000051df4b in _PyObject_MakeTpCall ()
#29 0x0000000000517bf7 in _PyEval_EvalFrameDefault ()
#30 0x00000000005294e3 in _PyFunction_Vectorcall ()
#31 0x0000000000517537 in _PyEval_EvalFrameDefault ()
#32 0x0000000000510d0d in ?? ()
#33 0x0000000000510ab7 in _PyEval_EvalCodeWithName ()
#34 0x00000000005f5043 in PyEval_EvalCode ()
#35 0x0000000000619757 in ?? ()
#36 0x0000000000614f80 in ?? ()
#37 0x00000000006196e9 in ?? ()
#38 0x0000000000619186 in PyRun_SimpleFileExFlags ()
#39 0x000000000060ca03 in Py_RunMain ()
#40 0x00000000005e9b49 in Py_BytesMain ()
#41 0x00007f2860a68d0a in __libc_start_main (main=0x5e9b10, argc=2, argv=0x7ffe74199f58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe74199f48) at ../csu/libc-start.c:308
#42 0x00000000005e9a4a in _start ()
(rr) reverse-finish
Run back to call of #0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
Thread 1 received signal SIGABRT, Aborted.
__GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 return ret;
(rr)
Run back to call of #0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
0x00007f2860a67532 in __GI_abort () at abort.c:79
79 abort.c: Datei oder Verzeichnis nicht gefunden.
(rr)
Run back to call of #0 0x00007f2860a67532 in __GI_abort () at abort.c:79
__libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f2860bcee31 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
155 abort ();
(rr)
Run back to call of #0 __libc_message (action=action at entry=do_abort, fmt=fmt at entry=0x7f2860bcee31 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
0x00007f2860ac7a55 in malloc_printerr (str=str at entry=0x7f2860bd1210 "double free or corruption (out)") at malloc.c:5347
5347 __libc_message (do_abort, "%s\n", str);
(rr)
Run back to call of #0 0x00007f2860ac7a55 in malloc_printerr (str=str at entry=0x7f2860bd1210 "double free or corruption (out)") at malloc.c:5347
0x00007f2860ac9083 in _int_free (av=0x7f2860c00b80 <main_arena>, p=0x23cb2f0, have_lock=<optimized out>) at malloc.c:4314
4314 malloc_printerr ("double free or corruption (out)");
(rr)
Run back to call of #0 0x00007f2860ac9083 in _int_free (av=0x7f2860c00b80 <main_arena>, p=0x23cb2f0, have_lock=<optimized out>) at malloc.c:4314
0x00007f2860acc777 in __GI___libc_free (mem=<optimized out>) at malloc.c:3125
3125 _int_free (ar_ptr, p, 0);
(rr)
Run back to call of #0 0x00007f2860acc777 in __GI___libc_free (mem=<optimized out>) at malloc.c:3125
0x00007f2851183ad3 in Eigen::internal::aligned_free (ptr=0x23cb300) at ./contrib/eigen/Eigen/src/Core/util/Memory.h:177
177 std::free(ptr);
(rr) list
172
173 /** \internal Frees memory allocated with aligned_malloc. */
174 EIGEN_DEVICE_FUNC inline void aligned_free(void *ptr)
175 {
176 #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
177 std::free(ptr);
178 #else
179 handmade_aligned_free(ptr);
180 #endif
181 }
(rr) b *(__GI___libc_malloc+173) if $rax == 0x23cb2f0
Breakpoint 1 at 0x7f2860acc19d: file malloc.c, line 3082.
(rr)
Note: breakpoint 1 also set at pc 0x7f2860acc19d.
Breakpoint 2 at 0x7f2860acc19d: file malloc.c, line 3082.
(rr) dele 2
(rr) reverse-cont
Continuing.
Thread 1 hit Breakpoint 1, 0x00007f2860acc19d in __GI___libc_malloc (bytes=<optimized out>) at malloc.c:3082
3082 }
(rr) when
Current event: 16766
(rr) bt
#0 0x00007f2860acc19d in __GI___libc_malloc (bytes=<optimized out>) at malloc.c:3082
#1 0x00007f285e7d2bdb in Eigen::internal::handmade_aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:88
#2 Eigen::internal::aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:164
#3 Eigen::internal::conditional_aligned_malloc<true> (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:214
#4 Eigen::internal::conditional_aligned_new_auto<int, true> (size=4) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:374
#5 Eigen::DenseStorage<int, -1, -1, 1, 0>::resize (rows=4, size=4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:557
#6 Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >::resize (size=4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:319
#7 Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >::_init1<long>(long, Eigen::internal::enable_if<((((Eigen::DenseBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >::{unnamed type#1})-1)!=(1))||(!Eigen::internal::is_convertible<long, int>::value))&&((!((Eigen::internal::is_same<Eigen::MatrixXpr, Eigen::ArrayXpr>::{unnamed type#1})0))||((({unnamed type#1})-1)==Eigen::Dynamic)), Eigen::internal::is_convertible>::type*) (size=4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:782
#8 Eigen::Matrix<int, -1, 1, 0, -1, 1>::Matrix<long> (x=<synthetic pointer>: 4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:294
#9 Eigen::Transpositions<-1, -1, int>::Transpositions (size=4, this=0x7ffe74198f58) at /usr/include/eigen3/Eigen/src/Core/Transpositions.h:177
#10 Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> > (this=0x7ffe74198f30, matrix=...) at /usr/include/eigen3/Eigen/src/LU/PartialPivLU.h:321
#11 0x00007f2851183643 in Eigen::MatrixBase<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >::partialPivLu (this=0x80) at ./contrib/eigen/Eigen/src/Core/util/Meta.h:300
#12 Eigen::internal::compute_inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, -1>::run (matrix=..., result=...) at ./contrib/eigen/Eigen/src/LU/InverseImpl.h:28
#13 0x00007f285118974f in Eigen::internal::Assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run (src=..., dst=...) at ./contrib/eigen/Eigen/src/LU/InverseImpl.h:310
#14 Eigen::internal::call_assignment_no_alias<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double> > (func=..., src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:836
#15 Eigen::internal::call_assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::assign_op<double, double> >(Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >&, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > const&, Eigen::internal::assign_op<double, double> const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >, Eigen::internal::evaluator_traits<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > >::Shape>::value, void*>::type) (func=..., src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:804
#16 Eigen::internal::call_assignment<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> >, Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > > (src=..., dst=...) at ./contrib/eigen/Eigen/src/Core/AssignEvaluator.h:782
#17 Eigen::MatrixBase<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > >::operator=<Eigen::Inverse<Eigen::Map<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0> > > > (other=..., this=0x7ffe74199160) at ./contrib/eigen/Eigen/src/Core/Assign.h:66
#18 fullMatrix<double>::invert (result=..., this=0x7ffe74199100) at ./Numeric/fullMatrix.h:650
#19 (anonymous namespace)::generateLagrangeMonomialCoefficients (point=..., monomial=...) at ./Numeric/polynomialBasis.cpp:46
#20 polynomialBasis::polynomialBasis (this=0x20c8690, tag=<optimized out>) at ./Numeric/polynomialBasis.cpp:104
#21 0x00007f28510f1bca in gmsh::model::mesh::getElementProperties (elementType=4, name=..., dim=@0x7f285eba5590: 0, order=@0x7f285eba5610: 0, numNodes=@0x7f285eba5710: 0, localNodeCoord=std::vector of length 0, capacity 0, numPrimaryNodes=@0x7f285eba5f90: 0) at ./Common/gmsh.cpp:1841
#22 0x00007f2851cab640 in gmshModelMeshGetElementProperties (elementType=<optimized out>, elementName=0x7f285eba5510, dim=<optimized out>, order=<optimized out>, numNodes=<optimized out>, localNodeCoord=0x7f285eba5790, localNodeCoord_n=0x7f285eba5890, numPrimaryNodes=0x7f285eba5f90, ierr=0x7f285ebbf090) at ./api/gmshc.cpp:1124
#23 0x00007f285fcb8d1d in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#24 0x00007f285fcb8289 in ?? () from /lib/x86_64-linux-gnu/libffi.so.7
#25 0x00007f285fcd1340 in ?? () from /usr/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so
#26 0x00007f285fcc78d6 in ?? () from /usr/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so
#27 0x000000000051df4b in _PyObject_MakeTpCall ()
#28 0x0000000000517bf7 in _PyEval_EvalFrameDefault ()
#29 0x00000000005294e3 in _PyFunction_Vectorcall ()
#30 0x0000000000517537 in _PyEval_EvalFrameDefault ()
#31 0x0000000000510d0d in ?? ()
#32 0x0000000000510ab7 in _PyEval_EvalCodeWithName ()
#33 0x00000000005f5043 in PyEval_EvalCode ()
#34 0x0000000000619757 in ?? ()
#35 0x0000000000614f80 in ?? ()
#36 0x00000000006196e9 in ?? ()
#37 0x0000000000619186 in PyRun_SimpleFileExFlags ()
#38 0x000000000060ca03 in Py_RunMain ()
#39 0x00000000005e9b49 in Py_BytesMain ()
#40 0x00007f2860a68d0a in __libc_start_main (main=0x5e9b10, argc=2, argv=0x7ffe74199f58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe74199f48) at ../csu/libc-start.c:308
#41 0x00000000005e9a4a in _start ()
(rr) finish
Run till exit from #0 0x00007f2860acc19d in __GI___libc_malloc (bytes=<optimized out>) at malloc.c:3082
Eigen::internal::handmade_aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:89
89 if (original == 0) return 0;
Value returned is $1 = (void *) 0x23cb2f0
(rr) list
84 * Fast, but wastes 16 additional bytes of memory. Does not throw any exception.
85 */
86 inline void* handmade_aligned_malloc(std::size_t size)
87 {
88 void *original = std::malloc(size+EIGEN_DEFAULT_ALIGN_BYTES);
89 if (original == 0) return 0;
90 void *aligned = reinterpret_cast<void*>((reinterpret_cast<std::size_t>(original) & ~(std::size_t(EIGEN_DEFAULT_ALIGN_BYTES-1))) + EIGEN_DEFAULT_ALIGN_BYTES);
91 *(reinterpret_cast<void**>(aligned) - 1) = original;
92 return aligned;
93 }
(rr) up
#1 Eigen::internal::aligned_malloc (size=16) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:164
164 result = handmade_aligned_malloc(size);
(rr) list 155
150 /** \internal Allocates \a size bytes. The returned pointer is guaranteed to have 16 or 32 bytes alignment depending on the requirements.
151 * On allocation error, the returned pointer is null, and std::bad_alloc is thrown.
152 */
153 EIGEN_DEVICE_FUNC inline void* aligned_malloc(std::size_t size)
154 {
155 check_that_malloc_is_allowed();
156
157 void *result;
158 #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
159 result = std::malloc(size);
(rr)
160 #if EIGEN_DEFAULT_ALIGN_BYTES==16
161 eigen_assert((size<16 || (std::size_t(result)%16)==0) && "System's malloc returned an unaligned pointer. Compile with EIGEN_MALLOC_ALREADY_ALIGNED=0 to fallback to handmade alignd memory allocator.");
162 #endif
163 #else
164 result = handmade_aligned_malloc(size);
165 #endif
166
167 if(!result && size)
168 throw_std_bad_alloc();
169
(rr)
170 return result;
171 }
172
173 /** \internal Frees memory allocated with aligned_malloc. */
174 EIGEN_DEVICE_FUNC inline void aligned_free(void *ptr)
175 {
176 #if (EIGEN_DEFAULT_ALIGN_BYTES==0) || EIGEN_MALLOC_ALREADY_ALIGNED
177 std::free(ptr);
178 #else
179 handmade_aligned_free(ptr);
(rr) display/i $pc
1: x/i $pc
=> 0x7f285e7d2bdb <_ZN5Eigen12PartialPivLUINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2IS2_EERKNS_9EigenBaseIT_EE+1483>: mov -0x60(%rbp),%r8
(rr) info share
From To Syms Read Shared Object Library
...
0x00007f2850fe9110 0x00007f2851cbce4e Yes /lib/x86_64-linux-gnu/libgmsh.so.4.7
...
0x00007f285e778b20 0x00007f285e8ad79e Yes /lib/x86_64-linux-gnu/libdolfinx_real.so.2019.2
...
(*): Shared library is missing debugging information.
# dpkg -S /usr/lib/x86_64-linux-gnu/libgmsh.so.4.7
libgmsh4:amd64: /usr/lib/x86_64-linux-gnu/libgmsh.so.4.7
# dpkg -S /usr/lib/x86_64-linux-gnu/libdolfinx_real.so.2019.2
libdolfinx-real2019.2:amd64: /usr/lib/x86_64-linux-gnu/libdolfinx_real.so.2019.2
# dpkg -l | grep -E "libgmsh4|libdolfinx-real2019.2"
ii libdolfinx-real2019.2:amd64 2019.2.0~git20201109.17bda9f-6 amd64 Shared libraries for DOLFIN
ii libdolfinx-real2019.2-dbgsym:amd64 2019.2.0~git20201109.17bda9f-6 amd64 debug symbols for libdolfinx-real2019.2
ii libgmsh4:amd64 4.7.1+ds1-2 amd64 Three-dimensional finite element mesh generator shared library
ii libgmsh4-dbgsym:amd64 4.7.1+ds1-2 amd64 debug symbols for libgmsh4
More information about the debian-science-maintainers
mailing list