Hey! Yes, perfect, that worked
I installed NGSolve from source with HYPRE and MPI support on two machines, Ubuntu 18 and MacOS 10.14.
Whenever I run *anything*, I get the following error:
Code:
$ netgen navierstokes.py
NETGEN-6.2-dev
Developed by Joachim Schoeberl at
2010-xxxx Vienna University of Technology
2006-2010 RWTH Aachen University
1996-2006 Johannes Kepler University Linz
Including MPI version 3.1
Problem in Tk_Init:
result = no display name and no $DISPLAY environment variable
optfile ./ng.opt does not exist - using default values
togl-version : 2
no OpenGL
loading ngsolve library
NGSolve-6.2.2001-11-g0929bd80
Using Lapack
Including sparse direct solver UMFPACK
Running parallel using 1 thread(s)
(should) load python file 'navierstokes.py'
loading ngsolve library
NGSolve-6.2.2001-11-g0929bd80
Using Lapack
Including sparse direct solver UMFPACK
Running parallel using 1 thread(s)
Caught SIGSEGV: segmentation fault
I realize this is probably very difficult to debug, also for you, so I have a more general question: is there any way of getting a stack trace at this point? Running this through valgrind produces another very mysterious error:
Code:
$ valgrind !!
valgrind netgen navierstokes.py
==16773== Memcheck, a memory error detector
==16773== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==16773== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==16773== Command: netgen navierstokes.py
==16773==
vex amd64->IR: unhandled instruction bytes: 0x62 0xF1 0x7D 0x28 0xEF 0xC0 0x83 0xFE 0x8 0xB8
vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE
vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
==16773== valgrind: Unrecognised instruction at address 0x5f81400.
==16773== at 0x5F81400: __mutex_base (std_mutex.h:68)
==16773== by 0x5F81400: mutex (std_mutex.h:94)
==16773== by 0x5F81400: netgen::BlockAllocator::BlockAllocator(unsigned int, unsigned int) (optmem.cpp:20)
==16773== by 0x5D68679: __static_initialization_and_destruction_0 (localh.cpp:27)
==16773== by 0x5D68679: _GLOBAL__sub_I_localh.cpp (localh.cpp:800)
==16773== by 0x4010732: call_init (dl-init.c:72)
==16773== by 0x4010732: _dl_init (dl-init.c:119)
==16773== by 0x40010C9: ??? (in /lib/x86_64-linux-gnu/ld-2.27.so)
==16773== by 0x1: ???
==16773== by 0x1FFF00047E: ???
==16773== by 0x1FFF000485: ???
==16773== Your program just tried to execute an instruction that Valgrind
==16773== did not recognise. There are two possible reasons for this.
==16773== 1. Your program has a bug and erroneously jumped to a non-code
==16773== location. If you are running Memcheck and you just saw a
==16773== warning about a bad jump, it's probably your program's fault.
==16773== 2. The instruction is legitimate but Valgrind doesn't handle it,
==16773== i.e. it's Valgrind's fault. If you think this is the case or
==16773== you are not sure, please let us know and we'll try to fix it.
==16773== Either way, Valgrind will now raise a SIGILL signal which will
==16773== probably kill your program.
Caught SIGILL: illegal instruction
==16773==
==16773== HEAP SUMMARY:
==16773== in use at exit: 2,916 bytes in 62 blocks
==16773== total heap usage: 87 allocs, 25 frees, 881,786 bytes allocated
==16773==
==16773== LEAK SUMMARY:
==16773== definitely lost: 0 bytes in 0 blocks
==16773== indirectly lost: 0 bytes in 0 blocks
==16773== possibly lost: 160 bytes in 2 blocks
==16773== still reachable: 2,756 bytes in 60 blocks
==16773== suppressed: 0 bytes in 0 blocks
==16773== Rerun with --leak-check=full to see details of leaked memory
==16773==
==16773== For counts of detected and suppressed errors, rerun with: -v
==16773== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
In the mean time, I will try to checkout the NGSolve repo at the moment HYPRE support was first introduced, and see if that fixes any of my problems.
Thank you for your continued support