I have built the current git version
(https://git.savannah.gnu.org/git/xforms.git) on Ubuntu 20.04 and
Rocky Linux 8.5 and got the same problem: fdesign segfaults when
'File' is clicked on.
Following Clive's hint I have found just 4 places XStoreName is used:
lib/canvas.c: XStoreName( flx->display, sp->window, ob->label );
lib/canvas.c: XStoreName( flx->display, sp->window, name );
lib/popup.c: XStoreName( flx->display, popup->win, popup->title );
lib/xpopup.c: XStoreName( flx->display, m->win, m->title );
but I do not have any idea how to fix the problem. I have even
localized the segfault to be originating in 'xpopup.c', with m->title
being 0x0, so I made it point to an empty static string (""). The
program did not segfault on "File" but aborted on "SaveAs" from File
popup, saying
munmap_chunk(): invalid pointer
Abort (core dumped)
so I surrendered.
Any more hints? Without working fdesign the whole library is pretty unusable :(
regards, Michal
On Wed, Jun 30, 2021 at 02:27:35AM +0100, Clive Stubbings wrote:
Hi,
There has been a regression in the xorg libX11
It is likely this is your issue - it was spotted in one of my xforms programs a
few weeks ago by one of my users.
XStoreName used to tolerate a NULL pointer (it checked before using it). New
code has been added ahead of that check.
If your system has recently updated its libraries, thats likely the cause.
I believe it has now been fixed upstream thanks to the person who spotted the
problem feeding the cause back to the developers and a new version should come
through in due course.
If you need a quicker fix, hack the library to make sure it doesn't pass a NULL
pointer to XStoreName.
Cheers
Clive
On Sun, 27 Jun 2021, ternaryd wrote:
On Sat, 26 Jun 2021 15:47:12 -0700
Coby Hochstein <cjh39@cox.net> wrote:
Hello,
when I load fdesign and click on the "File"
menu bar fdesign segmentation faults.
I'm running xforms-1.2.4
(gdb) run
Starting program: /usr/local/bin/fdesign
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/arm-linux-gnueabihf/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation
fault.
strlen () at ../sysdeps/arm/armv6/strlen.S:26
26 ../sysdeps/arm/armv6/strlen.S: No such
file or directory.
(gdb)
Any idea ?
fdesign is calculating the string length of a
string pointing to NULL.
Use a version of fdesign compiled with debugging
enabled, run it again until crash, and check the
coredump in gdb. Use the "up" command until you
reach a stack level belonging to fdesign (or
xforms). You should see which pointer is NULL.
Then you can try to figure out, why it is NULL
and how to fix it.
$ ulimit -c unlimited
$ ./fdesign ...
$ gdb ./fdesign coredump
(gdb> up
...
you can query the value of any variable at the
time of the crash with
(gdb) p varname
HTH
--
Cris
--
Michal Szymanski (msz at astrouw dot edu dot pl)
Warsaw University Observatory, Warszawa, POLAND