I was trying to use some OpenGL software on the vim3 and encountered segmentation fault
all the time.
I only have very basic knowledge to OpenGL and no experience with OpenGL ES, but I tried to gather some information on this issue.
Here is minimal reproducible example:
- try tutorial 2 in this repo
https://github.com/tharkum/opengl-demo -
make
and run the binary, got a dot in the window, great. - In main.cpp, change
GraphicsTimer* timer = new GraphicsTimer(500, render_cb, &context);
to
GraphicsTimer* timer = new GraphicsTimer(30, render_cb, &context);
or anything lower than 200. -
make
and run. Boom,segmentation fault
.
I was stunned because I can’t even get a dot displayed at 30fps.
My log shows:
khadas@Khadas:~/Downloads/opengl-demo/tutorial02$ gdb -ex run --args ./tutorial02
Reading symbols from ./tutorial02...(no debugging symbols found)...done.
Starting program: /home/khadas/Downloads/opengl-demo/tutorial02/tutorial02
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fb31921d0 (LWP 5665)]
[New Thread 0x7faa9911d0 (LWP 5666)]
[New Thread 0x7fb29911d0 (LWP 5667)]
[New Thread 0x7fb21901d0 (LWP 5668)]
[New Thread 0x7fb198f1d0 (LWP 5669)]
[New Thread 0x7fb118e1d0 (LWP 5670)]
[New Thread 0x7fb06b5910 (LWP 5671)]
[New Thread 0x7fabfff1d0 (LWP 5672)]
[New Thread 0x7fab7fe1d0 (LWP 5673)]
[New Thread 0x7faa1901d0 (LWP 5674)]
[New Thread 0x7fa998f1d0 (LWP 5675)]
[New Thread 0x7fa918e1d0 (LWP 5676)]
[New Thread 0x7fa898d1d0 (LWP 5677)]
[New Thread 0x7f7bfff1d0 (LWP 5678)]
[New Thread 0x7f7b7fe1d0 (LWP 5679)]
[New Thread 0x7f7affd1d0 (LWP 5680)]
[New Thread 0x7f7a7fc1d0 (LWP 5681)]
[New Thread 0x7f79ffb1d0 (LWP 5682)]
[New Thread 0x7f797fa1d0 (LWP 5683)]
[New Thread 0x7f78ff91d0 (LWP 5684)]
[New Thread 0x7f57fff1d0 (LWP 5685)]
Thread 9 "tutorial02" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fabfff1d0 (LWP 5672)]
0x0000007fb3d3687c in llvm::Value::getName() const ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
(gdb) bt
#0 0x0000007fb3d3687c in llvm::Value::getName() const ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#1 0x0000007fb3cf9a14 in llvm::FPPassManager::runOnFunction(llvm::Function&)
() from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#2 0x0000007fb3cf9c2c in llvm::FPPassManager::runOnModule(llvm::Module&) ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#3 0x0000007fb3cf9f98 in llvm::legacy::PassManagerImpl::run(llvm::Module&) ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#4 0x0000007fb4abc488 in llvm::MCJIT::emitObject(llvm::Module*) ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#5 0x0000007fb4abc858 in llvm::MCJIT::generateCodeForModule(llvm::Module*) ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#6 0x0000007fb4abd058 in llvm::MCJIT::finalizeObject() ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#7 0x0000007fb4a9ed58 in LLVMGetPointerToGlobal ()
from /usr/lib/aarch64-linux-gnu/libLLVM-8.so.1
#8 0x0000007fb692d23c in ?? ()
from /usr/lib/aarch64-linux-gnu/dri/swrast_dri.so
#9 0x0000007fb7365000 in ?? ()
from /usr/lib/aarch64-linux-gnu/dri/swrast_dri.so
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)
I am wondering if this is a GPU driver issue.
More background:
The software I planned to run was Kstars, a planetarium software that renders the stars in the sky. It crashed every time at startup. Logs below.
A similar software, carte du ciel (sky chart) can run OK using its armhf
package. The aarch64
version can be opened but if I drag the chart, it crashes with the same error.
khadas@Khadas:~$ gdb -ex run --args kstars
Reading symbols from kstars...(no debugging symbols found)...done.
Starting program: /usr/bin/kstars
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7faec51090 (LWP 8651)]
[New Thread 0x7fae3e7090 (LWP 8653)]
[New Thread 0x7fadbe6090 (LWP 8654)]
[New Thread 0x7fad3e5090 (LWP 8655)]
[New Thread 0x7facbe4090 (LWP 8656)]
[New Thread 0x7fa7fff090 (LWP 8657)]
[New Thread 0x7fa77fe090 (LWP 8658)]
[New Thread 0x7fa6ffd090 (LWP 8659)]
[New Thread 0x7fa67fc090 (LWP 8660)]
[New Thread 0x7fa5ffb090 (LWP 8661)]
org.kde.kstars: Welcome to KStars 2.9.4
org.kde.kstars: Build: 2018-04-12T19:22:22Z
org.kde.kstars: OS: "ubuntu"
org.kde.kstars: API: "arm64-little_endian-lp64"
org.kde.kstars: Arch: "arm64"
org.kde.kstars: Kernel Type: "linux"
org.kde.kstars: Kernel Version: "4.9.190"
[New Thread 0x7fa57fa090 (LWP 8662)]
Thread 1 "kstars" received signal SIGSEGV, Segmentation fault.
0x0000007fb2df62d8 in specific_new_surface ()
from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
(gdb) bt
#0 0x0000007fb2df62d8 in specific_new_surface () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#1 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#2 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#3 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#4 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#5 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2
#6 0x0000007fb2df7a90 in common_window_surface_new () from /usr/lib/aarch64-linux-gnu/libGLESv2.so.2