Description of problem:
An apparent glibc bug causes gnucash to segfault on startup when LD_LIBRARY_PATH is set to a nonexistant directory
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. export LD_LIBRARY_PATH=/nonexistent_path
2. gnucash &
3. watch gnucash segfault
gnucash starts successfully. Clearing LD_LIBRARY_PATH, or pointing LD_LIBRARY_PATH at a directory which actually exists, resolves the problem.
The segmentation fault seems to occur when glib's _g_module_open() calls dlopen() at gmodule-dl.c:97 The filename to be opened is /usr/lib64/gio/modules/libgvfsdbus.so -- part of gvfs2.
dlopen() is given an absolute path, so it should not be searching per the man page: "If filename contains a slash ("/"), then it is
interpreted as a (relative or absolute) pathname. Otherwise, the
dynamic linker searches for the library ... "
(Since filename contains a slash, the otherwise clause is not applicable, so dlopen() should not be searching)
dlopen seems to be searching through LD_LIBRARY_PATH anyway (based on strace output) and a segmentation fault occurs several function calls deep.
Clearing LD_LIBRARY_PATH resolves the problem
This might be the root cause of bug #1177891
The core C library is linked into every application and therefore involved in most strack traces. In order to effectively triage the incoming requests we need the help of users and developers alike to determine root causes.
Would you please provde an SOS report, or run gnucash through the debugger to produce a backtrace that can help us sort this bug against other bugs, and suggest a workaround or solution?
As it is this bug does not contain enough information for me to conclude that it's a problem with glibc. Please reopen when you have an SOS report or backtrace with symbol information.
Until then I'm going to move this bug to gnucash for the gnucach maintainers to investigate.
Created attachment 982161 [details]
Stack backtrace from gdb
stack backtrace attached; Frame #11 is where it enters the C library, trying to open /usr/lib64/gio/modules/libgvfsdbus.so
This is a glibc bug. Allan had posted a patch for it for which I had asked for a test case. I'll see if I can write one myself and have this fixed.
*** Bug 1187980 has been marked as a duplicate of this bug. ***
glibc-2.20-8.fc21 has been submitted as an update for Fedora 21.
* should fix your issue,
* was pushed to the Fedora 21 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing glibc-2.20-8.fc21'
as soon as you are able to.
Please go to the following url:
then log in and leave karma (feedback).
glibc-2.20-8.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.