Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.bugs.dist > #1269384
| From | Hibby <hibby@debian.org> |
|---|---|
| Newsgroups | linux.debian.bugs.dist, linux.debian.maint.hams |
| Subject | Bug#1120279: direwolf 1.8~beta1+dfsg-1: Segfault during cleanup at the end of an AGWPE connection |
| Date | 2025-11-07 11:30 +0100 |
| Message-ID | <LOrTb-b90C-9@gated-at.bofh.it> (permalink) |
| References | <LOfIl-b0wX-7@gated-at.bofh.it> <LOfIl-b0wX-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Cross-posted to 2 groups.
Thanks for this, I'll be interested to see if this can be reproduced when I upload 1.8 later this week (unless someone else beats me to it!)
--
Dave Hibberd <hibby@debian.org>
Debian Developer
Packet Radioist
MM0RFN
On Thu, 6 Nov 2025, at 9:10 PM, Karsten Merker wrote:
> Package: direwolf
> Version: 1.8~beta1+dfsg-1
> Severity: normal
> Tags: upstream
> X-Debbugs-Cc: merker@debian.org
>
> Hello,
>
> after the end of an AGWPE session between a client and direwolf,
> direwolf crashes with a segfault. Following is a minimal
> testcase to be run without having a radio connected:
>
> $ sudo apt install direwolf pat
> $ cat > /tmp/direwolf.conf <<EOF
> ADEVICE pulse
> CHANNEL 0
> MYCALL N0CALL
> MODEM 1200
> AGWPORT 8000
> FX25TX 1
> EOF
> $ cat >/tmp/pat-config.json <<EOF
> {
> "mycall": "N0CALL",
> "secure_login_password": "verysecret",
> "agwpe": {
> "addr": "localhost:8000",
> "radio_port": 0
> }
> }
> EOF
> $ direwolf -c /tmp/direwolf.conf -p
>
> Open a new shell and run:
>
> $ pat-winlink --config /tmp/pat-config.json connect "ax25+agwpe:///DB0ABC"
>
> This results in:
>
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> Dire Wolf version 1.8 (Oct 15 2025) BETA TEST 1
> Includes optional support for: gpsd hamlib cm108-ptt
>
> Reading config file /tmp/direwolf.conf
> Audio device for both receive and transmit: pulse (channel 0)
> Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, A+, 44100 sample rate, Tx FX.25.
>
> Note: PTT not configured for channel 0. (OK if using VOX.)
> When using VOX, ensure that it adds very little delay (e.g. 10-20) milliseconds
> between the time that transmit audio ends and PTT is deactivated.
> For example, if using a SignaLink USB, turn the DLY control all the
> way counter clockwise.
>
> Using VOX built in to the radio is a VERY BAD idea. This is intended
> for voice operation, with gaps in the sound, and typically has a delay
> of about a
> half second between the time the audio stops and the transmitter is
> turned off.
> When using APRS your transmiter will be sending a quiet carrier for
> about a half second after your packet ends. This may interfere with the
> the next station to transmit. This is being inconsiderate.
>
> If you are trying to use VOX with connected mode packet, expect
> frustration and disappointment. Connected mode involves rapid responses
> which you will probably miss because your transmitter is still on when
> the response is being transmitted.
>
> Read the User Guide 'Transmit Timing' section for more details.
>
> Ready to accept AGW client application 0 on port 8000 ...
> Ready to accept KISS TCP client application 0 on port 8001 ...
> Virtual KISS TNC is available on /dev/pts/7
> Created symlink /tmp/kisstnc -> /dev/pts/7
>
> Attached to AGW client application 0...
>
> Ready to accept AGW client application 1 on port 8000 ...
> Attempting connect to DB0ABC ...
> [0L] N0CALL>DB0ABC:(SABME cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABME cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABME cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> [0L] N0CALL>DB0ABC:(SABM cmd, p=1)
> Failed to connect to DB0ABC after 10 tries.
> Segmentation fault direwolf -c /tmp/direwolf.conf -p
> -----8<----------8<----------8<----------8<----------8<----------8<-----
>
> The problem also exists in the upstream 1.8 release and in the
> current upstream 1.9 dev branch, but not in the 1.7 release.
> Git bisecting points to the following upstream commit as the
> change that introduced the segfault:
>
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> commit c317511f7a5159b2611dfc0fc6a7b883a7c83338
> Author: Martin Cooper <mfncooper@gmail.com>
> Date: Thu Sep 18 17:33:47 2025 -0700
>
> Clean up AGWPE connection data upon termination
>
> Per-connection data for an AGWPE connection was being cleaned up only
> when the client itself went away, rather than when each connection
> was terminated. This led to reuse of stale state machine instances,
> which in turn led to incorrect connection attempts and statistics.
>
> The following changes have been made to address this:
>
> * Per-connection cleanup code from dl_client_cleanup has been moved
> to a new function, dl_connection_cleanup. dl_client_cleanup now
> calls this new function from within its existing loop, walking
> though all connections for the client being cleaned up.
>
> * A new function, dl_connection_terminated, encapsulates the removal
> of a single state machine instance from the list and the cleanup of
> that connection instance, calling dl_connection_cleanup for the
> latter.
>
> * Everywhere that server_link_terminated is being called, a new call
> to dl_connection_terminated has been added nearby, to ensure the
> connection is cleaned up. The call is "nearby" because invocations
> of server_link_terminated differ in their surrounding calls to
> other timer and state functions, and the order of those calls, so
> simply wrapping server_link_terminated is not appropriate.
>
> Many, but not all, existing calls to server_link_terminated have
> nearby calls to set the state machine state to disconnected. While
> this is also done in dl_connection_cleanup, the existing calls have
> been left to minimize disruption. (There is no real cost associated
> with changing state from disconnected to disconnected.)
>
> These changes have been tested in as many situations as possible, with
> Direwolf started using '-d ac' to watch debug output for both AGWPE
> and connection / state machine related activity.
>
> Fixes #534, Fixes #535
> -----8<----------8<----------8<----------8<----------8<----------8<-----
>
> Kind regards,
> Karsten
>
> P.S.: I have already sent this bug report to upstream.
>
> -- System Information:
> Debian Release: forky/sid
> APT prefers unstable
> APT policy: (500, 'unstable'), (1, 'experimental')
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 6.17.6+deb14-amd64 (SMP w/8 CPU threads; PREEMPT)
> Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE not set
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
>
> Versions of packages direwolf depends on:
> ii adduser 3.153
> ii libasound2t64 1.2.14-2
> ii libc6 2.41-12
> ii libgps30t64 3.25-5
> ii libhamlib4t64 4.6.5-5
> ii libudev1 258.1-2
>
> direwolf recommends no packages.
>
> Versions of packages direwolf suggests:
> ii gpsd 3.25-5
> ii python3 3.13.7-1
>
> -- no debconf information
Back to linux.debian.bugs.dist | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Bug#1120279: direwolf 1.8~beta1+dfsg-1: Segfault during cleanup at the end of an AGWPE connection Karsten Merker <merker@debian.org> - 2025-11-06 22:30 +0100
Bug#1120279: direwolf 1.8~beta1+dfsg-1: Segfault during cleanup at the end of an AGWPE connection Hibby <hibby@debian.org> - 2025-11-07 11:30 +0100
Bug#1120279: direwolf 1.8~beta1+dfsg-1: Segfault during cleanup at the end of an AGWPE connection David Ranch <debian-hams@trinnet.net> - 2025-11-07 20:50 +0100
csiph-web