Some crash logs captured in script() on gdb() and tt++(). Nothing the PC does seems to trigger it, it rather random and just happens after varying lengths of time.
As I was running this one as a user I don't have a syslog.CRASH file to share for this particular instance. I can provide a syslog.CRASH from the main instance running as its own daemon. Noticeably, the differences in value of what's being freed and what I believe if the PID of the running circle, yet remarkably similar at the same time
Code:
Nov 05 17:11:08 2026 :: nusage: 1 sockets connected, 1 sockets playing
circle(2851) in free(): write to free mem 0x7d5d39a0380[56..63]@112
Snips from the gdb() side of the screen captures.
Code:
circle(76783) in free(): write to free mem 0x7c531a2dbd0[56..63]@112
Program received signal SIGABRT, Aborted.
thrkill () at /tmp/-:2
2 /tmp/-: No such file or directory.
in /tmp/-
Current language: auto; currently asm
(gdb) bt
#0 thrkill () at /tmp/-:2
#1 0x96d145f72d5efb2b in ?? ()
#2 0x000007c512fcde9b in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
#3 0x000007c512f899b4 in wrterror (d=Variable "d" is not available.
) at /usr/src/lib/libc/stdlib/malloc.c:378
#4 0x000007c512f8b4f3 in ofree (argpool=0x7aa804cb3f90, p=Variable "p" is not available.
) at /usr/src/lib/libc/stdlib/malloc.c:782
#5 0x000007c512f8ac33 in _libc_free (ptr=0x7c506e7c010) at /usr/src/lib/libc/stdlib/malloc.c:1735
#6 0x000007c2c9921890 in free_var_el (var=0x7c5049cf300) at dg_handler.c:31
#7 0x000007c2c9921919 in free_varlist (vd=0x7c5049cf300) at dg_handler.c:45
#8 0x000007c2c99364b7 in script_driver_default (go_adress=0x7aa804cb45b0, trig=0x7c59ccf70e0, type=0, mode=0, default_ret=1)
at dg_scripts.c:2815
#9 0x000007c2c9935510 in script_driver (go_adress=0x7aa804cb45b0, trig=0x7c59ccf70e0, type=0, mode=0) at dg_scripts.c:2580
#10 0x000007c2c993ca65 in greet_mtrigger (actor=0x7c54e3b0250, dir=1) at dg_triggers.c:227
#11 0x000007c2c98a5599 in do_simple_move (ch=0x7c54e3b0250, dir=1, need_specials_check=1) at act.movement.c:322
#12 0x000007c2c98a5c23 in perform_move (ch=0x7c54e3b0250, dir=1, need_specials_check=1) at act.movement.c:358
#13 0x000007c2c999e7e0 in mobile_activity () at mobact.c:107
#14 0x000007c2c990695c in heartbeat (heart_pulse=18000) at comm.c:1069
#15 0x000007c2c9903dbc in game_loop (local_mother_desc=6) at comm.c:1023
#16 0x000007c2c99021ba in init_game (local_port=8000) at comm.c:573
#17 0x000007c2c9901f1e in main (argc=2, argv=0x7aa804cb56f8) at comm.c:350
(gdb) up
#1 0x96d145f72d5efb2b in ?? ()
(gdb) up
#2 0x000007c512fcde9b in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
51 /usr/src/lib/libc/stdlib/abort.c: No such file or directory.
in /usr/src/lib/libc/stdlib/abort.c
Current language: auto; currently minimal
(gdb) up
#3 0x000007c512f899b4 in wrterror (d=Variable "d" is not available.
) at /usr/src/lib/libc/stdlib/malloc.c:378
378 /usr/src/lib/libc/stdlib/malloc.c: No such file or directory.
in /usr/src/lib/libc/stdlib/malloc.c
(gdb) up
#4 0x000007c512f8b4f3 in ofree (argpool=0x7aa804cb3f90, p=Variable "p" is not available.
) at /usr/src/lib/libc/stdlib/malloc.c:782
782 in /usr/src/lib/libc/stdlib/malloc.c
(gdb) up
#5 0x000007c512f8ac33 in _libc_free (ptr=0x7c506e7c010) at /usr/src/lib/libc/stdlib/malloc.c:1735
1735 in /usr/src/lib/libc/stdlib/malloc.c
(gdb) up
#6 0x000007c2c9921890 in free_var_el (var=0x7c5049cf300) at dg_handler.c:31
31 free(var->name);
(gdb) list
26
27 /* frees memory associated with var */
28 void free_var_el(struct trig_var_data *var)
29 {
30 if (var->name)
31 free(var->name);
32 if (var->value)
33 free(var->value);
34 free(var);
35 }
(gdb) print var
$1 = (struct trig_var_data *) 0x7c5049cf300
(gdb) print var->name
$2 = 0x7c506e7c010 "actor"
(gdb) info local
No locals.
(gdb) up
#7 0x000007c2c9921919 in free_varlist (vd=0x7c5049cf300) at dg_handler.c:45
45 free_var_el(j);
(gdb) info local
i = (struct trig_var_data *) 0x7c559ef8700
j = (struct trig_var_data *) 0x7c5049cf300
(gdb) list
40 struct trig_var_data *i, *j;
41
42 for (i = vd; i;) {
43 j = i;
44 i = i->next;
45 free_var_el(j);
46 }
47 }
48
49 /* Remove var name from var_list. Returns 1 if found, else 0. */
(gdb) up
#8 0x000007c2c99364b7 in script_driver_default (go_adress=0x7aa804cb45b0, trig=0x7c59ccf70e0, type=0, mode=0, default_ret=1)
at dg_scripts.c:2815
2815 free_varlist(GET_TRIG_VARS(trig));
(gdb) info local
depth = 1
ret_val = 1
cl = (struct cmdlist_element *) 0x0
cmd = 0x7aa804cb40f0 "mforce }10000244 flee"
p = 0x7c5c6df5562 "end"
sc = (struct script_data *) 0x7c5140d1db0
temp = (struct cmdlist_element *) 0x7ffffff600000000
go = (void *) 0x7c4dd6f06f0
(gdb) list
2810 case MOB_TRIGGER: sc = SCRIPT((char_data *) go); break;
2811 case OBJ_TRIGGER: sc = SCRIPT((obj_data *) go); break;
2812 case WLD_TRIGGER: sc = SCRIPT((room_data *) go); break;
2813 }
2814 if (sc)
2815 free_varlist(GET_TRIG_VARS(trig));
2816 GET_TRIG_VARS(trig) = NULL;
2817 GET_TRIG_DEPTH(trig) = 0;
2818
2819 depth--;
(gdb) up
#9 0x000007c2c9935510 in script_driver (go_adress=0x7aa804cb45b0, trig=0x7c59ccf70e0, type=0, mode=0) at dg_scripts.c:2580
2580 return script_driver_default(go_adress, trig, type, mode, 1);
(gdb) info local
No locals.
(gdb) list
2575 * int mode
2576 TRIG_NEW just started from dg_triggers.c
2577 TRIG_RESTART restarted after a 'wait' */
2578 int script_driver(void *go_adress, trig_data *trig, int type, int mode)
2579 {
2580 return script_driver_default(go_adress, trig, type, mode, 1);
2581 }
2582
2583 int script_driver_default(void *go_adress, trig_data *trig, int type, int mode,
2584 int default_ret)
(gdb) up
#10 0x000007c2c993ca65 in greet_mtrigger (actor=0x7c54e3b0250, dir=1) at dg_triggers.c:227
227 intermediate = script_driver(&ch, t, MOB_TRIGGER, TRIG_NEW);
(gdb) info local
t = (trig_data *) 0x7c59ccf70e0
ch = (char_data *) 0x7c4dd6f06f0
buf = 0x7aa804cb43b0 "}10000244"
Snippets from tintin++
Code:
500H 100M 82V >
The Peacekeeper leaves east.
500H 100M 82V >
The green gelatinous blob has arrived.
500H 100M 82V >
The green gelatinous blob leaves east.
500H 100M 82V >
The green gelatinous blob has arrived.
500H 100M 82V >
The green gelatinous blob leaves east.
500H 100M 82V >
The janitor has arrived.
500H 100M 82V >
The janitor leaves west.
500H 100M 82V >
The green gelatinous blob has arrived.
500H 100M 82V >
The green gelatinous blob leaves south.
500H 100M 82V >
The janitor has arrived.
500H 100M 82V >
The janitor leaves east.
The green gelatinous blob has arrived.
500H 100M 82V >
The green gelatinous blob leaves south.
500H 100M 82V >
The janitor has arrived.
500H 100M 82V >
The green gelatinous blob has arrived.
500H 100M 82V >
The janitor leaves south.
500H 100M 82V >
The janitor has arrived.
The green gelatinous blob leaves south.
500H 100M 82V >
The janitor leaves south.
500H 100M 82V >
The janitor has arrived.
500H 100M 82V >
The janitor leaves east.
500H 100M 82V > ESC[0m#SESSION 'Clockwerx' DIED.ESC[0m
ESC=ESC[?1049lESC[?7787lESC[r^MESC[69;1HESC[0m#SESSION 'gts' ACTIVATED.ESC[0m
Further notes.
System: OpenBSD 8.0
Platform: amd64
sysctl: vm.malloc_conf=SF
Compilation flags = -g -O0 -Wall -Wextra -Wpedantic -Wsystem-headers -Wno-error=gnu-include-next -Wstack-protector -fstack-protector-strong -Werror -Wno-error=unused-parameter -Wno-unused-parameter -ftrapv
CC = clang-22
Booting over to Debian and will try running a copy of the mud over there and see what happens.