#1094237 gpsmon segfaults shortly after start on armhf

Package:
gpsd-tools
Source:
gpsd-tools
Description:
Global Positioning System - tools
Submitter:
Jonathan McDowell
Date:
2025-01-26 11:57:02 UTC
Severity:
normal
#1094237#5
Date:
2025-01-26 11:53:13 UTC
From:
To:
Trying to start gpsmon results in a segfault:

$ gpsmon
tcp://localhost:2947          JSON slave driver>
(82) {"class":"VERSION","release":"3.25","rev":"3.25","proto_major":3,"proto_minor":15}
(391) {"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyS1","driver":"u-blox","subtype":"SW 1.00 (59842),HW 00070000","subtype1":"PROTVER 14.00,GPS;SBAS;GLO;QZSS","activated":"2025-01-26T11:47:40.180Z
","flags":1,"native":1,"bps":9600,"parity":"N","stopbits":1,"cycle":1.00,"mincycle":0.02},{"class":"DEVICE","path":"/dev/pps0","driver":"PPS","activated":"2025-01-07T20:48:33.147Z"}]}
(122) {"class":"WATCH","enable":true,"json":false,"nmea":false,"raw":2,"scaled":false,"timing":false,"split24":false,"pps":true}
Segmentation fault

This appears to be something wrong with the ncurses setup; running under GDB gives:

Program received signal SIGSEGV, Segmentation fault.
                                                    Download failed: Invalid argument.  Continuing without source file ./obj/ncurses/../../ncurses/base/lib_delwin.c.
cannot_delete (win=0x4efe40) at ../../ncurses/base/lib_delwin.c:61
warning: 61     ../../ncurses/base/lib_delwin.c: No such file or directory
(gdb) bt
#0  cannot_delete (win=0x4efe40) at ../../ncurses/base/lib_delwin.c:61
#1  delwin (win=0x4efe40) at ../../ncurses/base/lib_delwin.c:83
#2  0x004071ac in switch_type (devtype=<optimized out>) at gpsd-3.25/gpsmon/gpsmon.c:521
#3  0x0040747a in select_packet_monitor (device=0x491490 <session>) at gpsd-3.25/gpsmon/gpsmon.c:571
#4  gpsmon_hook (device=0x491490 <session>, changed=<optimized out>) at gpsd-3.25/gpsmon/gpsmon.c:818
#5  0x0042c7ca in gpsd_multipoll (data_ready=<optimized out>, device=device@entry=0x491490 <session>, handler=0x4072d9 <gpsmon_hook>, reawake_time=reawake_time@entry=0) at gpsd-3.25/gpsd/libgpsd_core.c:2078
#6  0x00405502 in main (argc=<optimized out>, argv=<optimized out>) at gpsd-3.25/gpsmon/gpsmon.c:1464

And running as "gpsmon --nocurses" gives:

$ gpsmon --nocurses
gpsmon: tcp://localhost:2947
(82) {"class":"VERSION","release":"3.25","rev":"3.25","proto_major":3,"proto_minor":15}
(391) {"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyS1","driver":"u-blox","subtype":"SW 1.00 (59842),HW 00070000","subtype1":"PROTVER 14.00,GPS;SBAS;GLO;QZSS","activated":"2025-01-26T11:51:11.124Z","flags":1,"native":1,"bps":9600,"parity":"N","stopbits":1,"cycle":1.00,"mincycle":0.02},{"class":"DEVICE","path":"/dev/pps0","driver":"PPS","activated":"2025-01-07T20:48:33.147Z"}]}
(122) {"class":"WATCH","enable":true,"json":false,"nmea":false,"raw":2,"scaled":false,"timing":false,"split24":false,"pps":true}
(26) b56201041200e8618b020f270f270f270f270f270f270f276720
(24) b56201201000e8618b02603b07002f091003fffffffff0e2
(60) b56201063400d0658b02603b07002f09004cc44304260000000000000000c06fb826000000000000000000000000d00700000f27020084d30100c86e
(16) b56201300800d0658b0200030000fe04

and seems to continue to run just fine.

This is on a machine which was upgraded from bookworm to trixie this
weekend (because I think I've been hitting #926615 and was hoping 64 bit
time_t might help stop the machine becoming entirely unbootable when it
does); gpsmon worked fine under bookworm, and has only started failing
since the upgrade.