[LBBS-128] thread.c: Recursive lock attempt between find_thread and thread_unregister

LBBS-150
Identify issues using static analysis tools
PHREAKNET-10
Enhanced utilization of Feature Group D
LBBS-149
net_imap: Assertion on non-synchronizing upload of message too large
LBBS-148
net_imap: Soft assertion if APPEND used in non-selected state
LBBS-32
mod_spamassassin: Improve default spam handling
LBBS-147
net_imap: Long header values cause header parsing to fail
LBBS-146
mod_mimeparse: Crash when parsing swap file
LBBS-145
test_mail_stress: SEARCH test is flaky
LBBS-128
thread.c: Recursive lock attempt between find_thread and thread_unregister
LBBS-142
io_compress: File descriptor 0 closed unintentionally
LBBS-144
mod_smtp_delivery_external: Hang at shutdown if queue thread interrupted while busy
LBBS-140
net_imap: Lots of calls to generate_mailbox_name
LBBS-102
mod_smtp_filter: Received header no longer has 'for' recipient included
LBBS-135
net_irc: Assertion due to recursive lock attempt
LBBS-139
auth.c: SEGV if login fails due to failed MySQL connection
LBBS-111
mod_asterisk_ami: Add multi-Asterisk support
LBBS-134
net_ssh: Node lingers forever if closed while running ncurses
LBBS-137
net_smtp: Be able to inhibit/redirect bounces for forwarded messages
LBBS-133
io_tls: Crash due to t being NULL in io_read_pending
LBBS-141
menu.c: Attempt to unlock unheld lock
LBBS-136
mod_mail: Assertion due to recursive lock attempt
LBBS-34
net_xmpp: Add XMPP protocol support
LBBS-143
threading: Reduce number of threads in waitjoin state
ASTERISK-180
app.c: Simplify allocation for ast_app_run_sub
LBBS-31
mod_sieve: Major Sieve filtering overhaul and improvements
ASTERISK-22
general: Fix various typos
LBBS-65
net_smtp: Allow internal trusted hosts to be exempt from protocol violation checks
LBBS-138
mail: Forwarded messages through Office 365 can fail DMARC
LBBS-90
mod_smtp_delivery_external: Improve queuing process
PHREAKSCRIPT-79
app_r2: Make compelled signaling work
PHREAKNET-68
Recent Change Update/Reload functions in MARCH don't work
ASTERISK-179
res_calendar_icalendar: Calendar download warnings from proxy site
ASTERISK-23
logging: Update log levels
ASTERISK-178
dns_core.c: Meaningless priority value
LBBS-132
net_irc: Add IRCv3 extensions
LIRC-1
Crash when parsing incomplete event
LIRC-2
irc.c: Partial reads occur occasionally
LBBS-129
editor.c: Small terminal widths lead to drawing issues
DAHLIN-20
user.h: Some fixes need to be backported for RHEL
ASTERISK-177
chan_iax2: Need to use exponential backoff for frame retries
LBBS-131
mod_discord: Segfault when module is reloaded
DAHLIN-19
dahdi_vpmadt032_loader: Ignored attributes
PHREAKNET-40
Recent Change provisioning bug increments device name by 1
PHREAKNET-67
Allow operators to manually ticket calls
INTERLINKED-27
CONVERT_TZ not recognizing US timezones
LBBS-121
mod_asterisk_queues: Memory corruption or use after free in agent list
LBBS-130
test_imap_msn: Flaky test
LBBS-109
net_telnet: Local echo remains enabled in some cases
PHREAKNET-65
ZEnith numbers don't bill properly
PHREAKNET-66
Allow signaling when through on coin calls
LBBS-127
net_tap: Add support for TAP/IXO paging protocol
PHREAKNET-64
234 5700 unable to dial 980 5111
ASTERISK-171
chan_iax2: Crash due to memory corruption following packet decrypt failures
LBBS-56
net_snpp: Add Simple Network Paging Protocol support
PHREAKNET-62
Trunk calls where a #7 is keyed a second tone is inserted
PHREAKSCRIPT-66
dahdi_vpmadt032_loader.o: unannotated intra-function call
ASTERISK-176
chan_pjsip: Add "none" DTMF method
PHREAKSCRIPT-78
chan_sccp: Don't know how to send format
ASTERISK-175
app_mixmonitor: Can record multiple times to same file
ASTERISK-174
func_channel: Allow manually changing channel format
ASTERISK-173
dsp.c: Double DTMF detection with busydetect
LBBS-120
mod_asterisk_ami: NULL dereference possible if ami_session is currently NULL
ASTERISK-172
chan_dahdi: DAHDI FXO channels can stay busy on repeated access attempts
INTERLINKED-26
Emails with the .wiki extensions are not valid
PHREAKSCRIPT-25
chan_sccp no longer compiles
PHREAKSCRIPT-77
install: install_prereq aborts early
LBBS-114
net_imap: Modifying header files doesn't cause all dependents to get recompiled
LBBS-125
net_imap: SEGV if client login fails
LBBS-27
mod_irc_relay: Allow relaying of away/here status
LBBS-126
mod_oauth: OAuth tokens are refreshed unnecessarily frequently
LBBS-101
io_tls: Automatically reload TLS certificates and non-disruptively
WSSMAIL-8
Add NNTP support and IRC integration
PHREAKNET-63
Change of IP address
PHREAKSCRIPT-76
ast_safe_sleep: Memory corruption when freeing frames
ASTERISK-58
xml: Add config documentation
LBBS-95
mod_mailscript: Add ADDFLAG action
ASTERISK-170
app_voicemail: Read-only option doesn't prevent move operations
PHREAKSCRIPT-75
Add support for DNVT military phones
LBBS-118
SEGV in IMAP session when mailbox selected
LBBS-122
mod_http: Uninitialized memory access during Basic Authentication
LBBS-119
module.c: Use after free when unloading modules with recursive dependents
LBBS-123
module.c: Use after free with module references
PHREAKNET-61
Create a webpage for the operator automatic traffic generator
LBBS-124
net_http: Allow for multiple virtualhosts
ASL-7
app_rpt: Add XML documentation
ASTERISK-169
stasis: Memory corruption in channel_snapshot_dialplan_create
ASTERISK-109
voicemail.conf.sample: Clarify misnamed option behavior
ASTERISK-168
chan_iax2: Make refresh interval configurable
PHREAKSCRIPT-39
Add optional flag to not update system first
ASTERISK-167
sig_analog: Improve Call Forwarding implementation
ASTERISK-166
sig_analog: Make call waiting hangup behavior configurable
ASTERISK-165
res_calendar_icalendar: SEGV during module refresh
INTERLINKED-25
Optimize caching of dynamic CSS files
PHREAKNET-60
Enable standalone provisioning server
INTERLINKED-24
Improve programmatic interfaces to issues
LBBS-117
TLS/IMAP: Add extensible/detailed logging info
LBBS-116
net_imap: Untagged responses should be flushed before tagged response
LBBS-115
net_imap: Untagged EXPUNGE sent while no command in progress
EVERGREEN-4
Expunge of folder with mix of \Deleted messages results in stale view
PHREAKNET-47
Add automation for bill mailings
LBBS-47
Email enhancements
PHREAKNET-42
Provisioning fails for lines with certain features
LBBS-64
mod_operator: Crash with more than 64 options?
ASTERISK-164
chan_dahdi: Allow setting/getting lastexten from dialplan
ASTERISK-163
Add support for KP2
DAHTOOL-8
autoreconf fails
ASTERISK-162
chan_dahdi: Allow echo cancellation to be toggled during call
LBBS-49
Add functionality expected of a traditional BBS package
ASTERISK-161
config.c: Don't auto-prepend headers if config file unmodified
ASL-6
app_rpt: Allow dialplan to be executed when placing calls
ASL-5
app_rpt: DAHDI tones not working for genchannel
LBBS-113
Add support for TOTP two-factor and app passwords
ASTERISK-160
chan_dahdi: Add timer for caller subscriber held
LBBS-112
mod_asterisk_ami: Exponential backoff logic busy loops instead
LBBS-110
Support TDD message lines
INTERLINKED-23
Phone number verification not correctly decoding DTMF
ASTERISK-32
chan_dahdi: Allow Call Forwarding to be set/get programatically
PHREAKSCRIPT-74
Finish real time inpulsing support
ASTERISK-159
chan_dahdi: Remove unused code
PHREAKSCRIPT-73
res_smdr_whozz: Heuristically use call progress to determine if call was answered
PHREAKSCRIPT-72
res_smdr_whozz: Build/support loop follower circuit for pulse support
ASTERISK-158
dsp.c: Dial tone detection fails through pulse to tone converter
ASTERISK-157
chan_dahdi: Empty voicemail messages on hangup
PHREAKSCRIPT-69
res_alarmsystem: Add additional environmental integration
PHREAKSCRIPT-37
app_softmodem: Support speeds higher than 2400bps
ASTERISK-151
ast_tls_cert: Expiration days needs to be configurable
ASTERISK-91
features.c: Add warning to not set BRIDGE_NOANSWER as global variable
ASTERISK-24
app_chanspy: Add no answer option
ASTERISK-80
app_record: Add RECORD_TIME function
ASTERISK-20
app_meetme: Update or remove removal version
ASTERISK-59
chan_dahdi: Remove stripmsd
ASTERISK-150
func_curl: Add CURLOPT option to allow digest auth
ASTERISK-49
Remove all deprecated stuff
ASTERISK-93
chan_dahdi: DSP optimizations
ASTERISK-156
chan_dahdi: Clean up permanent/transient private variables
PHREAKSCRIPT-71
Add PolycomPush application
ASTERISK-18
func_frame_drop: Simplify and improve
LBBS-108
parallel.c: Deadlock possible when joining task thread
ASTERISK-130
Verify that res_xmpp can compile and be used
ASTERISK-155
chan_iax2: Barrage of DTMF frames can cause channel to hang
ASTERISK-154
app_dial: Dialplan freeze during announcement
LBBS-9
mod_webmail: Improve MIME parsing to extract HTML/PT components
DAHLIN-18
Avoid flushing system-wide workqueues (calls to __warn_flushing_systemwide_wq)
DAHLIN-16
OSLEC dependency removed from kernel
ASTERISK-153
app_confbridge: Allow disabling the CBAnn channel
DAHTOOL-1
system.conf: Fix typos
DAHTOOL-7
Unknown type bool in Rocky Linux 9.2
DAHTOOL-6
Support ppp 2.5.0
DAHLIN-17
dahdi-base.c: Misusage of strncat function
INTERLINKED-17
Blog: Issues with tag editing and viewing
LBBS-106
net_ssh: Soft assertion due to data during shutdown
LBBS-105
config.c: Configs can be purged while being used
LBBS-104
net_ssh: Attempt to resize node dimensions after node destroyed
SLACK-7
Add support for detecting messages posted via workflow
LBBS-107
mod_sieve: Segfault in lib libsieve_strbuffree during message delivery
ASTERISK-152
app_queue: Allow ringall to be combined with other settings
ASTERISK-148
sig_analog: fgccamamf inserting "A" at the end of dialed number
LBBS-13
pty.c: Attempt to acquire node lock after it's been destroyed
LBBS-103
mod_webmail: Crash when FETCH fails after retry due to no messages returned
ASTERISK-79
config.c: Make ast_variable_retrieve return last match
PHREAKNET-46
Polycom IP phones not provisioning
DAHLIN-15
Add support for 20pps dial pulsing
ASTERISK-122
res_pjsip_device_features: Excessive refcount on endpoint object
ASTERISK-145
res_stir_shaken: Date header is required but shouldn't be
ASTERISK-149
sig_analog: Winks from dialplan don't propagate onto DAHDI channels
DAHLIN-14
DAHDI modules fail to load with error: loading out-of-tree module taints kernel
PHREAKSCRIPT-67
Add rate limiting application
LBBS-71
Limit registrations from same IP within a certain amount of time
ASTERISK-147
res_smdi: Allow Asterisk to be the SMDI server
EVERGREEN-3
Add NNTP support for newsgroups
DOCS-3
verify.conf: Boilerplate uses hardcoded paths for astkeydir
ASTERISK-143
func_sysinfo: Add options to retrieve current verbose/debug levels
PHREAKNET-58
TSPS phrasing is not correct
ASTERISK-142
res_pjsip_caller_id: P-Charge-Info should be used for ANI
ASTERISK-146
res_agi: callingani2 is not formatted as 2 digits
TEST-1
Test issue
ASTERISK-144
chan_pjsip: Add support for directrtpsetup
LBBS-48
net_irc: Support multi-server networks
PHREAKSCRIPT-34
app_verify: Check additional headers for STIR/SHAKEN attestation
ASTERISK-77
sig_analog: Add Call Waiting Deluxe support
LBBS-22
mod_mail_trash: Eliminate bbs_pthread_cancel_kill
LBBS-30
net_nntp: Complete overhaul/rewrite to use maildirs
LBBS-80
tests: Jump to invalid address on the next line
LBBS-96
pty: CR NUL is sometimes split up, leaking to flaky test
DAHLIN-6
Frame relay broken
ASTERISK-141
app_mixmonitor: Warning when writing voicemail
PHREAKNET-36
Trunking integration with Phil McCarter
INTERLINKED-2
PhreakNet Email for BoD Members
ASTERISK-16
res_pbx_validate: Add commands to warn of dialplan problems
ASTERISK-140
res_pjsip_session: Add support for SIP-ISUP
PHREAKSCRIPT-68
asterisk.c: Compilation warning due to fscanf unused result
LBBS-70
mod_smtp_delivery_external: Use SRS for externally forwarded messages
LBBS-6
Add MenuScript, a menu system scripting engine
PHREAKSCRIPT-30
MD5/RSA authenticated calls frequently fail
ASL-4
Add framehook module to convert between mute/unmute and radio key/unkey
LBBS-100
mod_spamassassin: Duplicate close of file descriptor
LBBS-99
mod_webmail: Memory leak when SORT used
ASTERISK-139
app_sms: File a gcc 15 bug for false positive vectorization warning
PHREAKSCRIPT-64
res_smdr_whozz: Add optional DTMF detection via FXO port
PHREAKSCRIPT-65
wanpipe: wanpipe modules fail to load
LBBS-98
net_smtp: Fix message processing actions being skipped in some cases
LBBS-97
system.c: Evaluate shell syntax/variables when launching programs
LBBS-94
net_imap: No response from remote IMAP server at login
ASTERISK-138
pbx.c: Allow KEEPALIVE emulation
PHREAKSCRIPT-61
No rule to make target 'vpmadt032_loader/vpmadt032_x86_64.o'
DAHLIN-9
No rule to make target 'vpmadt032_loader/vpmadt032_x86_64.o'
PHREAKSCRIPT-53
app_george: Cancel in-progress recording if nobody said anything
DAHLIN-13
wct4xxp: Taking address of expression of type void
DAHLIN-12
oct612x, wct4xxp: Compilation failure on next kernel
PHREAKSCRIPT-28
app_predial: Failure to retrieve user agent property
ASTERISK-81
format_lame: MP3 read and write with LAME library
SLACK-5
Failed to receive reply... when message sent
PHREAKSCRIPT-36
app_audichron: Tone not working after announcements
LBBS-86
Deadlock on internal lock mutex
LBBS-93
mod_discord: Reply function on Discord doesn't translate well to IRC
ASTERISK-121
Upstream PhreakScript patches
ASTERISK-63
Upstream certain PhreakScript modules
ASTERISK-33
docs: Update obsolete wiki links
ASTERISK-3
Asterisk Wiki issues
PHREAKSCRIPT-63
chan_dahdi: Unused variable x
LBBS-92
Gmail bug causes disconnect after MOVE of certain messages
PHREAKNET-55
PhreakNet telegrams should also page recipient
LBBS-91
readline.c: Crash in memmove
PHREAKSCRIPT-62
res_smdr_whozz: Initialization usually fails in practice
PHREAKNET-6
Verification flags international calls
ASTERISK-137
sig_analog: Add alternate dial pulse scheme support
LBBS-89
mod_sysop: Improve history navigation and tab completion
LBBS-42
mod_discord: Actions not relayed properly from IRC
LBBS-44
io_tls: TLS errors when no certs are defined
ASTERISK-110
chan_iax2: Implement MWI
LBBS-84
net_imap: Microsoft clients disconnected after 1 hour
LBBS-88
net_imap: IDLE data not being processed in realtime
LBBS-74
net_ssh: Sessions persist even when they no longer exist
LBBS-3
module.c: Module ref tracking is flaky
DAHLIN-11
Use dev_addr_set instead of directly modifying const buffer
LBBS-2
module.c: Improve module loading process
SLACK-6
Can't post messages in enterprise workspaces using RTM API
PHREAKNET-39
Splice Fred Covington prompts for speaking clock
DAHLIN-2
Fix typos and dead links
PHREAKSCAN-1
Raw data upload restricted to 15M
LBBS-87
mod_webmail: Null dereference in FETCHLIST
ASTERISK-136
app_voicemail: Voicemails stored but no email sent
LBBS-85
net_imap: Malformed IMAP FETCH response
PHREAKNET-54
Fix trunking to Telstar
LBBS-1
mod_slack: Workspace fails to initialize due to restrictions
PHREAKSCRIPT-59
Add PhreakScript option to enable EMPULSE
DAHLIN-10
Allow enabling EMPULSE and EMFLASH simultaneously
LBBS-83
Node deadlock on shutdown
LBBS-82
localtime_r deadlock
LBBS-81
io_tls: Crash due to uninitialized memory

← All Issues || New Issue →

Sort Normal || Priority

Details


Not currently sure how this is possible, and this is the first time I've seen it:

[2026-01-26 23:59:19.760]   DEBUG[2832531]: mod_mail.c:236 mailbox_dispatch_event: Dispatching mailbox event 'Logout' (maildir: )
[2026-01-26 23:59:19.760]   DEBUG[2832531]: node.c:2347 bbs_node_exit: Node 51 has ended its IMAPS session
[2026-01-26 23:59:19.760]   DEBUG[2832531]: node.c:641 node_shutdown: Beginning shut down of node 51
[2026-01-26 23:59:19.760]   DEBUG[2832531]: event.c:143 bbs_event_broadcast: Event NODE_SHUTDOWN dispatched and not consumed
[2026-01-26 23:59:19.760]   DEBUG[2832531]: event.c:143 bbs_event_broadcast: Event USER_LOGOFF dispatched and not consumed
[2026-01-26 23:59:19.760]   DEBUG[2832531]: io.c:608 bbs_io_teardown_all_transformers: Removing I/O transformer at index 0
[2026-01-26 23:59:19.761]   DEBUG[2832531]: thread.c:364 __bbs_pthread_join: Attempting to join thread 139898392590016 (LWP 2832532) at io.c:592 teardown_transformation()
[2026-01-26 23:59:19.761]   ERROR[2832531]: thread.c:125 __thread_unregister: Recursive attempt to wrlock &thread_list, definite deadlock! (rwlock acquired at thread.c:319 0 s ago by LWP 2832531)
[2026-01-26 23:59:19.761]   ERROR[2832531]: lock.c:477 __bbs_rwlock_wrlock: Failed assertion 0
[2026-01-26 23:59:19.787]   ERROR[2832531]: backtrace.c:255 bbs_log_backtrace: Got 15 backtrace records
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  0: lbbs bbs_log_backtrace()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  1: lbbs __bbs_assert_fatal()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  2: lbbs __bbs_rwlock_wrlock()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  3: lbbs <unknown>()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  4: lbbs __bbs_pthread_join()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  5: lbbs <unknown>()
[2026-01-26 23:59:20.219]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  6: lbbs bbs_io_teardown_all_transformers()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  7: lbbs bbs_io_shutdown()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  8: lbbs <unknown>()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace:  9: lbbs bbs_node_unlink()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace: 10: lbbs bbs_node_exit()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace: 11: [0x7f3cb1ebe387] net_imap.so                             net_imap.c:5117  __imap_handler()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace: 12: lbbs <unknown>()
[2026-01-26 23:59:20.220]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace: 13: [0x7f3cd63351f5] libc.so.6                         pthread_create.c:442   start_thread()
[2026-01-26 23:59:20.221]   ERROR[2832531]: backtrace.c:279 bbs_log_backtrace: 14: [0x7f3cd63b58dc] libc.so.6                                 clone3.S:83    clone3()
BBS server disconnected

#6  __bbs_rwlock_wrlock (t=0x55ed32ba8d90 <thread_list+16>, filename=0x55ed32b98e20 "thread.c", lineno=125, func=0x55ed32b993c0 <__func__.10> "__thread_unregister", name=0x55ed32b98e29 "&thread_list") at lock.c:>
        diff = 0
        res = 16
        c = 1
        now = 1769471959
        elapsed = 0
        start = 1769471959
        __func__ = "__bbs_rwlock_wrlock"
#7  0x000055ed32b7dc44 in __thread_unregister (id=139898392590016, file=0x55ed32b8d6da "io.c", line=592, func=0x55ed32b8df30 <__func__.6> "teardown_transformation") at thread.c:125
        x = 0x7f3cb1632980
        remove = 0
        lwp = -1
        __func__ = "__thread_unregister"
#8  0x000055ed32b7ec94 in __bbs_pthread_join (thread=139898392590016, retval=0x0, file=0x55ed32b8d6da "io.c", func=0x55ed32b8df30 <__func__.6> "teardown_transformation", line=592) at thread.c:414

Here is another instance. This basic issue (recursive lock error when a thread exits, in thread_unregister) has happened several times before. This seems more likely to happen when a thread has a very short lifetime, i.e. it is spawned and almost immediately exits.

[2026-03-05 13:10:54.171]   DEBUG[3840181]: io.c:267 io_transform_store: Set up I/O transformer at index 1
[2026-03-05 13:10:54.171]   DEBUG[3840181]: net_imap.c:4974 imap_process: 0x7f64827cb840 <= DU3 OK DEFLATE active
[2026-03-05 13:10:54.172]   DEBUG[3840183]: thread.c:106 thread_register: Thread 3840183 spawned from io_thread             started by thread 3840181 at io.c:434 bbs_io_transform_setup()
[2026-03-05 13:10:54.217]   DEBUG[3840181]: net_imap.c:5053 handle_client: 0x7f64827cb840 => DU4 NAMESPACE
...
[2026-03-05 13:10:54.225]   DEBUG[3840181]: net_imap.c:1913 handle_list: 0x7f64827cb840 <= DU5 OK LIST completed.
[2026-03-05 13:10:54.265]   DEBUG[3840182]: io_tls.c:230 io_read: SSL_read returned 0: SSL_ERROR_ZERO_RETURN
[2026-03-05 13:10:54.266]   DEBUG[3840182]: io.c:368 io_thread: TLS I/O thread exiting
[2026-03-05 13:10:54.266]   DEBUG[3840183]: io.c:358 io_thread: poll(pfds[0]) returned POLLHUP (fd 792)
[2026-03-05 13:10:54.266]   DEBUG[3840183]: io.c:368 io_thread: DEFLATE I/O thread exiting
[2026-03-05 13:10:54.266]   ERROR[3840183]: thread.c:125 __thread_unregister: Recursive attempt to wrlock &thread_list, definite deadlock! (rwlock acquired at thread.c:102 0 s ago by LWP 3840183)
[2026-03-05 13:10:54.267]   ERROR[3840183]: lock.c:508 __bbs_rwlock_wrlock: Failed assertion 0
[2026-03-05 13:10:54.507]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  0: lbbs bbs_log_backtrace()
[2026-03-05 13:10:54.507]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  1: lbbs __bbs_assert_fatal()
[2026-03-05 13:10:54.508]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  2: lbbs __bbs_rwlock_wrlock()
[2026-03-05 13:10:54.508]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  3: lbbs <unknown>()
[2026-03-05 13:10:54.508]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  4: lbbs <unknown>()
[2026-03-05 13:10:54.508]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  5: lbbs <unknown>()
[2026-03-05 13:10:54.508]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  6: [0x7f64c88a71f5] libc.so.6                         pthread_create.c:442   start_thread()
[2026-03-05 13:10:54.509]   ERROR[3840183]: backtrace.c:279 bbs_log_backtrace:  7: [0x7f64c89278dc] libc.so.6                                 clone3.S:83    clone3()
BBS server disconnected

#5  0x00005603acd36755 in __bbs_assert (function=0x5603acd74da0 <__func__.3> "__bbs_rwlock_wrlock", line=508, file=0x5603acd74198 "lock.c", condition_str=0x5603acd7420b "0", condition=0) at ../include/bbs.h:437
        diff = 0
        res = 16
        c = 1
        now = 1772716254
        elapsed = 0
        start = 1772716254
        __func__ = "__bbs_rwlock_wrlock"
#6  __bbs_rwlock_wrlock (t=0x5603acd8ed90 <thread_list+16>, filename=0x5603acd7eec0 "thread.c", lineno=125, func=0x5603acd7f460 <__func__.10> "__thread_unregister", name=0x5603acd7eec9 "&thread_list") at lock.c:508
        diff = 0
        res = 16
        c = 1
        now = 1772716254
        elapsed = 0
        start = 1772716254
        __func__ = "__bbs_rwlock_wrlock"
#7  0x00005603acd6405e in __thread_unregister (id=140069855704768, file=0x0, line=0, func=0x0) at thread.c:125
        x = 0x2b0000038f
        remove = 0
        lwp = -1
        __func__ = "__thread_unregister"
#8  0x00005603acd646fd in thread_unregister (id=0x7f648dfe36c0) at thread.c:232

Comments

3/10/2026 5:10 PM — InterLinked

Autoresolved by code commit on GitHub:

lock.c: Lock internal mutex when checking for recursive lock attempt.
https://github.com/InterLinked1/lbbs/commit/a0b082818843042eccadd77f2cf54d4f3ff64ece

You must be logged in to leave a comment.