View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000915 | LDMud 3.6 | LPC Compiler/Preprocessor | public | 2026-03-26 17:24 | 2026-03-26 17:24 |
| Reporter | gorgar | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | new | Resolution | open | ||
| Product Version | 3.6.6 | ||||
| Summary | 0000915: SIGSEGV in yyparse/read_jump_offset/get_bc_offset when compiling large LPC with foreach+continue | ||||
| Description | Hi team, I was running into a frequent crash when the main living object was compiling, so I used my AI workflow to reproduce it and document. This actual crash is a bit over my head. Note that this driver has a few custom add-ins but as far as can be told, they aren't affecting this crash. The reproduce example file is atrocious and maybe unnecessary but it's just being used to demonstrate the issue. Environment LDMud: 3.6.6 (custom fork) Platform: Ubuntu 22.04, x86_64 Core handling: apport (/var/lib/apport/coredump) Summary Compiling a large LPC file containing repeated foreach (...) { ... continue; ... } patterns causes a deterministic driver segfault during compile time. Observed Behavior Driver crashes with SIGSEGV Stack shows: get_bc_offset() read_jump_offset() yyparse() (prolang.y, continue/jump patching path) Crash happens while compiling LPC (not runtime execution). Expected Behavior Compiler should either compile successfully or emit a compile error, never segfault. | ||||
| Steps To Reproduce | Minimal Reproducer Attached: ldmud_foreach_continue_crash_repro_big.c How To Reproduce Start driver. Compile/load ldmud_foreach_continue_crash_repro_big.c. Observe segfault. | ||||
| Tags | No tags attached. | ||||
| Attached Files | login_probe_20260326_131117.log (7,830 bytes)
=== login_probe start 20260326_131117 ===
cwd: /home/df3/testmud/test-lib
ldmud: /home/df3/testmud/bin/ldmud
2026.03.26 13:11:17 [xerq] XERQ Mar 20 2026: Path 'erq', debuglevel 0
2026.03.26 13:11:17 [xerq] Demon started
2026.03.26 13:11:17 compiling secure/master.c ... done
2026.03.26 13:11:18 compiling secure/simul_efun.c ... done
2026.03.26 13:11:18 compiling room/room.c ... done
2026.03.26 13:11:18 compiling daemon/lava_terrain_d.c ... done
2026.03.26 13:11:18 compiling codex/ldmud_foreach_continue_crash_repro_big.c ...[xerq] read: No such device or address
2026.03.26 13:11:18 [xerq] Demon exiting.
timeout: the monitored command dumped core
/home/df3/testmud/test-lib/codex/login_probe.sh: line 46: 519357 Segmentation fault timeout 30 "${LDMUD_BIN}" -d -c --mudlib "${MUDLIB}" --python-script "${MUDLIB}/quests/scripts/startup.py" --debug-file "${MUDLIB}/log/game_logs/debug.log" -u 2300 2301
[probe] sending login payload
[probe] payload stderr:
=== tail DF.err ===
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:26 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:27 compiling room/room.c ... done
2026.03.26 13:08:28 compiling room/room.c ... done
2026.03.26 13:08:28 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:29 compiling room/room.c ... done
2026.03.26 13:08:30 compiling room/room.c ... done
2026.03.26 13:08:30 compiling bin/file/_cd.c ... done
2026.03.26 13:08:30 compiling bin/file/_ls.c ... done
2026.03.26 13:08:31 compiling room/room.c ... done
2026.03.26 13:08:37 compiling room/room.c ... done
2026.03.26 13:08:40 compiling room/room.c ... done
2026.03.26 13:08:43 compiling room/room.c ... done
2026.03.26 13:08:46 compiling room/room.c ... done
2026.03.26 13:08:48 compiling room/room.c ... done
2026.03.26 13:08:51 compiling room/room.c ... done
2026.03.26 13:08:53 compiling room/room.c ... done
2026.03.26 13:08:53 compiling room/room.c ... done
2026.03.26 13:08:55 compiling room/room.c ... done
2026.03.26 13:08:56 compiling room/room.c ... done
2026.03.26 13:08:58 compiling room/room.c ... done
2026.03.26 13:09:00 compiling room/room.c ... done
2026.03.26 13:09:03 compiling room/room.c ... done
2026.03.26 13:09:05 compiling room/room.c ... done
2026.03.26 13:09:08 compiling room/room.c ... done
2026.03.26 13:09:10 compiling room/room.c ... done
2026.03.26 13:09:10 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:12 compiling room/room.c ... done
2026.03.26 13:09:13 compiling room/room.c ... done
2026.03.26 13:09:13 compiling room/room.c ... done
2026.03.26 13:09:15 compiling room/room.c ... done
2026.03.26 13:09:15 compiling room/room.c ... done
2026.03.26 13:09:15 compiling room/room.c ... done
2026.03.26 13:09:18 compiling room/room.c ... done
2026.03.26 13:09:18 compiling room/room.c ... done
2026.03.26 13:09:18 compiling room/room.c ... done
2026.03.26 13:09:20 compiling room/room.c ... done
2026.03.26 13:09:20 compiling room/room.c ... done
2026.03.26 13:09:20 compiling room/room.c ... done
2026.03.26 13:09:22 compiling room/room.c ... done
2026.03.26 13:09:22 compiling room/room.c ... done
2026.03.26 13:09:24 compiling room/room.c ... done
2026.03.26 13:09:28 compiling room/room.c ... done
2026.03.26 13:09:28 compiling room/room.c ... done
2026.03.26 13:09:29 compiling room/room.c ... done
2026.03.26 13:09:30 compiling room/room.c ... done
2026.03.26 13:09:30 compiling room/room.c ... done
2026.03.26 13:09:31 compiling room/room.c ... done
2026.03.26 13:09:33 compiling room/room.c ... done
2026.03.26 13:09:33 compiling room/room.c ... done
2026.03.26 13:09:34 compiling room/room.c ... done
2026.03.26 13:09:35 compiling room/room.c ... done
2026.03.26 13:09:35 compiling room/room.c ... done
2026.03.26 13:09:36 compiling room/room.c ... done
2026.03.26 13:09:38 compiling room/room.c ... done
2026.03.26 13:09:39 compiling room/room.c ... done
2026.03.26 13:09:40 compiling room/room.c ... done
2026.03.26 13:09:41 compiling room/room.c ... done
2026.03.26 13:09:43 compiling room/room.c ... done
2026.03.26 13:09:45 compiling room/room.c ... done
2026.03.26 13:09:45 compiling room/room.c ... done
2026.03.26 13:09:48 compiling room/room.c ... done
2026.03.26 13:09:48 compiling room/room.c ... done
2026.03.26 13:09:50 compiling room/room.c ... done
2026.03.26 13:09:53 compiling room/room.c ... done
2026.03.26 13:09:55 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:58 compiling room/room.c ... done
2026.03.26 13:09:59 compiling room/room.c ... done
2026.03.26 13:10:01 compiling room/room.c ... done
2026.03.26 13:10:04 compiling room/room.c ... done
2026.03.26 13:10:06 compiling room/room.c ... done
2026.03.26 13:10:07 compiling room/room.c ... done
2026.03.26 13:10:09 compiling room/room.c ... done
2026.03.26 13:10:11 compiling room/room.c ... done
2026.03.26 13:10:14 compiling room/room.c ... done
2026.03.26 13:10:15 compiling room/room.c ... done
[xerq] read: Success
2026.03.26 13:10:16 [xerq] Demon exiting.
=== tail debug.log ===
2026.03.26 13:11:17 LDMud 3.6.6 (3.6.6) (release)
2026.03.26 13:11:17 Seeding PRG from /dev/urandom.
2026.03.26 13:11:17 TLS: (GnuTLS) trusted x509 certificates locations not specified.
2026.03.26 13:11:17 TLS: (GnuTLS) CRL checking disabled.
2026.03.26 13:11:17 TLS: Importing built-in default DH parameters.
2026.03.26 13:11:17 TLS: Setting built-in default priorities: PFS:+SECURE128:-VERS-SSL3.0:-DHE-DSS:-ARCFOUR-128:-MD5:-DES-CBC:%SERVER_PRECEDENCE.
2026.03.26 13:11:17 mySQL 8.0.45
2026.03.26 13:11:17 Attempting to start erq '/home/df3/testmud/bin/erq'.
2026.03.26 13:11:17 Hostname 'df2' address '127.0.1.1'
2026.03.26 13:11:17 UDP recv-socket requested for port: 2300
=== fresh log/rep/mudlib ===
=== login_probe end ===
| ||||