Package segfaults, either installed from binary, or compiled from ports...
*BSDThis forum is for the discussion of all BSD variants.
FreeBSD, OpenBSD, NetBSD, etc.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I must use this app ( cgx binary from calculix package ) to build a finite elements model of a Diesel Engine injector assembly, to test for thermal load. In my company ( the one i work for ) we have been running with some problems with the previous model, so i completely redesigned the thing. I will have to use it in Linux, before being able to run it seamlessly in Freebsd.
Strangely though, ccx binary, ( the solver that actually does the number crunching ) runs flawlessly in freebsd...
That's a 64-bit address which I'm certain is invalid. In decimal, it's 140,070,766,272,208. That's more than 127 terabytes.
Like i said... i only wish i had the time to delve into the code, and find out just how the address pointer gets malformed, googled for getcontext() libc bugs in Freebsd, and found a potentially useful link...
but as of NOW, i need to have this app ( cgx ) alive and kicking... in need to complete the digital mockup of the injector model so as to make a sensibility analysis od my design parameters, to assess expected reliability under service loads; in short words, get the best "bang for the buck".
As soon as a find a way to get it to work in *BSD, instead of posting from inside a VM, i will be using it natively in my mobo.
Here's a hint: 3 minutes with the gdb(1) man page, or 10 seconds right here.
Code:
$ gdb /path/to/program /path/to/core/file
gdb() will produce a bunch of heading messages, then give you a (gdb) prompt, where you can ask for a backtrace.
Code:
(gdb) bt
From the backtrace, perhaps even without debugging symbols, you should be able to discern which module was the last to be called before the failure. If not, you can rebuild your program with symbols and try again.
Right now, you do not know the cause of the failure. It could be the application. It could be a supporting library. But until you are able to determine the root cause, all else is a blend of what appears to be to some unsubstantiated wild guesses and magical thinking.
Last edited by jggimi; 01-31-2017 at 07:56 AM.
Reason: Added a second paragraph
Here's a hint: 3 minutes with the gdb(1) man page, or 10 seconds right here.
Code:
$ gdb /path/to/program /path/to/core/file
gdb() will produce a bunch of heading messages, then give you a (gdb) prompt, where you can ask for a backtrace.
Code:
(gdb) bt
From the backtrace, perhaps even without debugging symbols, you should be able to discern which module was the last to be called before the failure. If not, you can rebuild your program with symbols and try again.
Right now, you do not know the cause of the failure. It could be the application. It could be a supporting library. But until you are able to determine the root cause, all else is a blend of what appears to be to some unsubstantiated wild guesses and magical thinking.
last module called was __cxxabiv1::__si_class_type_info in libcxxrt.so
Code:
Loaded symbols for /libexec/ld-elf.so.1
#0 0x0000000804870268 in vtable for __cxxabiv1::__si_class_type_info () from /lib/libcxxrt.so.1
[New Thread 805c18000 (LWP 101269/<unknown>)]
(gdb) bt
#0 0x0000000804870268 in vtable for __cxxabiv1::__si_class_type_info () from /lib/libcxxrt.so.1
#1 0x0000000802406975 in ?? () from /usr/local/lib/gcc49/libstdc++.so.6
#2 0x00000008026bc3c0 in ?? () from /usr/local/lib/gcc49/libstdc++.so.6
#3 0x00007fffffffde20 in ?? ()
#4 0x0000000000000000 in ?? ()
(gdb)
...so, right now i know that libcxxrt.so calls something in libstdc++.so.6 ...
I believe you are misreading the output. The top of the trace is the most recent entry.
You will want to step through the application to discern what *it* is calling, and with what variable values, to cause the segfault. Helpfully, gdb() can step through an application (if built with debugging symbols) by function, by line-of-code, and even by compiled machine instruction. Line-of-code will be the most useful in such an exercise.
Last edited by jggimi; 01-31-2017 at 08:25 AM.
Reason: a little clarity
I believe you are misreading the output. The top of the trace is the most recent entry.
You will want to step through the application to discern what *it* is calling, and with what variable values, to cause the segfault. Helpfully, gdb() can step through an application (if built with debugging symbols) by function, by line-of-code, and even by compiled machine instruction. Line-of-code will be the most useful in such an exercise.
Code:
.....................................................................................
Loaded symbols for /lib/libthr.so.3
Reading symbols from /usr/lib/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/librt.so.1
Reading symbols from /usr/local/lib/gcc49/libstdc++.so.6...Error while reading shared library symbols:
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /usr/local/lib/gcc49/libstdc++.so.6]
.......................................................................................
Disclaimer. I don't use FBSD, as you know. But I find this an interesting message from gdb().
Code:
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /usr/local/lib/gcc49/libstdc++.so.6]
A quick internet search indicates this may cause problems for the gdb() you are using. There may be a port/package of a different version of gdb() for FBSD which can read the symbols from that library.
Or perhaps you can use your favorite tool and rebuild the library with a different version of DWARF symbols.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.