View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000595 | LDMud 3.3 | Runtime | public | 2009-01-15 15:35 | 2018-01-29 21:57 |
| Reporter | peng | Assigned To | Gnomi | ||
| Priority | high | Severity | crash | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.3.718 | ||||
| Target Version | 3.3.719 | Fixed in Version | 3.3.719 | ||
| Summary | 0000595: Crash in 718 | ||||
| Description | Crasher in 718, with FATAL. See backtrace in appended file. There is a custom pkg (stringcompiler) in our driver, so this is not out of the box. but since the additional efuns are not in the trace, this seems not to be the reason. Core und binary is available, if neccesary. | ||||
| Tags | No tags attached. | ||||
| Attached Files | backtrace_20090115.txt (17,340 bytes)
(gdb) bt full
#0 0x080f1390 in fatal (fmt=0x811434c "Bad stack at F_RETURN, %ld values too low\n") at simulate.c:588
ts = 0x8154e30 "\003"
#1 0x0809fb64 in eval_instruction (first_instruction=0xb4d16450 "\a4\030�@N\025\b", initial_sp=0x0) at interpret.c:8679
__store_double_int_ = 0
product = 0
pc = (bytecode_p) 0xb4d16453 "�@N\025\b"
fp = (svalue_t *) 0x8154e38
sp = (svalue_t *) 0x8154e30
num_arg = -1
instruction = 24
full_instr = 135614008
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154e38
use_ap = false
#2 0x08089af0 in int_call_lambda (lsvp=0xb4d16450, num_arg=0, allowRefs=false) at interpret.c:18170
f = 0
def = 0
code = "\a4\030�@N\025\b"
p = (bytecode_p) 0xb4d16452 "\030�@N\025\b"
min = 0
max = 0
i = -1261345712
sp = (svalue_t *) 0x8154e30
l = (lambda_t *) 0xb4d16452
#3 0x080abcc8 in v_funcall (sp=0x0, num_arg=1) at interpret.c:20451
args = (svalue_t *) 0x8154e30
#4 0x0809740c in eval_instruction (
first_instruction=0xb41413ae "a\001\005\017\022\002\004\025|\002*b�\v@�c|\001*\037\001�kY\037\001\0031|\003*\037\003�\020,|\004*j@\037\001\037\003\037\004>>\037\003\037\004>|\002\201*\037\001\037\003\037\004>\020A\016", initial_sp=0x0) at interpret.c:8297
ob = (object_t *) 0x0
pc = (bytecode_p) 0xb4141455 "c|\005*b�\vA\017�c]\037\005\030\031"
fp = (svalue_t *) 0x8154df8
sp = (svalue_t *) 0x8154e30
num_arg = -1
instruction = 446
full_instr = 1
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154e30
use_ap = false
#5 0x08097962 in eval_instruction (first_instruction=0xb10a340e "b\n:\n;\n<��c\0204k\abd��", initial_sp=0x0) at interpret.c:14796
prog = (program_t *) 0xb413d094
pc = (bytecode_p) 0xb10a3421 "c\030\031\210(\n�\001"
fp = (svalue_t *) 0x8154df0
sp = (svalue_t *) 0x8154df0
num_arg = 0
instruction = 166
full_instr = -1273752660
expected_stack = (svalue_t *) 0x8154df8
ap = (svalue_t *) 0x8154df8
use_ap = false
#6 0x080a8449 in apply_low (fun=0xb10a28ac, ob=0xb286cc38, num_arg=0, b_ign_prot=false, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0xb10de3a8 "\002\ba\002\bb\b"
progp = (program_t *) 0xb296bb04
save_csp = (struct control_stack *) 0x815cbc4
ix = 135613928
#7 0x0808a548 in int_apply (fun=0xb10a28ac, ob=0xb286cc38, num_arg=0, b_ign_prot=false, b_use_default=true) at interpret.c:17027
No locals.
#8 0x08097acb in eval_instruction (first_instruction=0xb2aa27e2 "a\004\005�", initial_sp=0x0) at interpret.c:16297
prog = (program_t *) 0xb413d094
pc = (bytecode_p) 0xb2aa2945 "c|\b*b\037"
fp = (svalue_t *) 0x8154d80
sp = (svalue_t *) 0x8154de8
num_arg = 2
instruction = 188
full_instr = 5
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154de0
use_ap = false
#9 0x08089f4d in int_call_lambda (lsvp=0x0, num_arg=3, allowRefs=false) at interpret.c:17913
i = 3
sp = (svalue_t *) 0x8154d10
l = (lambda_t *) 0xacd49ca0
#10 0x080f867b in v_limited (sp=0x0, num_arg=5) at simulate.c:5278
context = {rt = {last = 0xb4d18290, type = -2}, max_array = 0, max_mapping = 0, max_map_keys = 0, max_eval = 0,
max_byte = 0, max_file = 0, max_callouts = 0, use_cost = 1, eval_cost = 188019}
argp = (svalue_t *) 0x8154cf0
vec = (vector_t *) 0x0
limits = {rt = {last = 0x18, type = 1}, max_array = 0, max_mapping = 0, max_map_keys = 0, max_eval = 3000000,
max_byte = 0, max_file = 0, max_callouts = 0, use_cost = 0, eval_cost = -1261341048}
cl_args = 3
#11 0x0809740c in eval_instruction (first_instruction=0xb2aa2972 "a\003\004\037", initial_sp=0x0) at interpret.c:8297
ob = (object_t *) 0x0
pc = (bytecode_p) 0xb2aa29e6 "c\a5cwF*b\n\001\037\004\017\017C+\n%+\037\004+d��"
fp = (svalue_t *) 0x8154ca0
sp = (svalue_t *) 0x8154d10
num_arg = -1
instruction = 454
full_instr = 1
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154cf0
use_ap = false
#12 0x080a82e0 in apply_low (fun=0xb422f00c, ob=0xb2a9f26c, num_arg=3, b_ign_prot=false, allowRefs=false) at interpret.c:16836
funstart = (fun_hdr_p) 0xb2aa2970 "\003\005a\003\004\037"
progp = (program_t *) 0xb2aa25fc
save_csp = (struct control_stack *) 0x815caf8
ix = 8304
#13 0x0808a548 in int_apply (fun=0xb422f00c, ob=0xb2a9f26c, num_arg=3, b_ign_prot=false, b_use_default=true) at interpret.c:17027
No locals.
#14 0x08097acb in eval_instruction (first_instruction=0xac8ea67f "b�", initial_sp=0x0) at interpret.c:16297
prog = (program_t *) 0x8081d1e
pc = (bytecode_p) 0xb420a7fa "c]�\020"
fp = (svalue_t *) 0x8154c50
sp = (svalue_t *) 0x8154cb0
num_arg = 5
instruction = 188
full_instr = 3
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154c90
use_ap = false
#15 0x08089cf8 in int_call_lambda (lsvp=0x0, num_arg=135613504, allowRefs=false) at interpret.c:18170
i = 0
num_arg = -1399937411
funstart = (fun_hdr_p) 0xac8ea67d ""
sp = (svalue_t *) 0x8154c40
l = (lambda_t *) 0xac8ea67d
#16 0x080f867b in v_limited (sp=0x0, num_arg=2) at simulate.c:5278
context = {rt = {last = 0xb4d189a0, type = -2}, max_array = 5000, max_mapping = 0, max_map_keys = 15000,
max_eval = 3008894, max_byte = 50000, max_file = 50000, max_callouts = 0, use_cost = 0, eval_cost = 9355}
argp = (svalue_t *) 0x8154c38
vec = (vector_t *) 0x0
limits = {rt = {last = 0x8130370, type = -1399937428}, max_array = 0, max_mapping = 0, max_map_keys = 0, max_eval = 0,
max_byte = 0, max_file = 0, max_callouts = 0, use_cost = 1, eval_cost = -1261337848}
cl_args = 0
#17 0x0809740c in eval_instruction (first_instruction=0xb420a902 "\f\024\f\033\037", initial_sp=0x0) at interpret.c:8297
ob = (object_t *) 0x0
pc = (bytecode_p) 0xb420a87f "c]\031"
fp = (svalue_t *) 0x8154c28
sp = (svalue_t *) 0x8154c38
num_arg = -1
instruction = 454
full_instr = 1
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154c38
use_ap = false
#18 0x080a8449 in apply_low (fun=0xb4414938, ob=0xb420bc68, num_arg=1, b_ign_prot=true, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0x0
progp = (program_t *) 0xb4206014
save_csp = (struct control_stack *) 0xb4d188c4
ix = 135613464
#19 0x0808a548 in int_apply (fun=0xb4414938, ob=0xb420bc68, num_arg=1, b_ign_prot=true, b_use_default=false) at interpret.c:17027
No locals.
#20 0x0808ac27 in sapply_int (fun=0xb4414938, ob=0xb420bc68, num_arg=1, b_find_static=true, b_use_default=false)
at interpret.c:17188
expected_sp = (svalue_t *) 0x8154c10
#21 0x0808b1aa in apply_master_ob (fun=0xb4414938, num_arg=1, external=true) at interpret.c:17491
eval_cost_reserve = 2048
reserve_used = false
error_recovery_info = {rt = {last = 0xb4d1a1f0, type = 2}, flags = 1136477056, con = {text = {{__jmpbuf = {135613464,
136207904, -1261335900, -1261335960, -1261336208, 134787286}, __mask_was_saved = 0, __saved_mask = {__val = {3033631220,
1140078756, 13639, 1139776825, 1, 65536, 0 <repeats 26 times>}}}}}}
save_sp = (svalue_t *) 0x8154c18
save_csp = (struct control_stack *) 0x815c9a4
result = (svalue_t *) 0x0
#22 0x080f152a in fatal (fmt=0x8154c18 "\003") at simulate.c:643
ts = 0x81e5e20 "2009.01.15 22:03:19"
#23 0x0809fb64 in eval_instruction (first_instruction=0xb4d19030 "\a4\030� L\025\b", initial_sp=0x0) at interpret.c:8679
__store_double_int_ = -1303115628
product = 0
pc = (bytecode_p) 0xb4d19033 "� L\025\b"
fp = (svalue_t *) 0x8154c18
sp = (svalue_t *) 0x8154c10
num_arg = -1
instruction = 24
full_instr = 135613464
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154c18
use_ap = false
#24 0x08089af0 in int_call_lambda (lsvp=0xb4d19030, num_arg=0, allowRefs=false) at interpret.c:18170
f = 0
def = 0
code = "\a4\030� L\025\b"
p = (bytecode_p) 0xb4d19032 "\030� L\025\b"
min = 0
max = 0
i = -1261334480
sp = (svalue_t *) 0x8154c10
l = (lambda_t *) 0xb4d19032
#25 0x080abcc8 in v_funcall (sp=0x0, num_arg=1) at interpret.c:20451
args = (svalue_t *) 0x8154c10
#26 0x0809740c in eval_instruction (
first_instruction=0xb41413ae "a\001\005\017\022\002\004\025|\002*b�\v@�c|\001*\037\001�kY\037\001\0031|\003*\037\003�\020,|\004*j@\037\001\037\003\037\004>>\037\003\037\004>|\002\201*\037\001\037\003\037\004>\020A\016", initial_sp=0x0) at interpret.c:8297
ob = (object_t *) 0x0
pc = (bytecode_p) 0xb4141455 "c|\005*b�\vA\017�c]\037\005\030\031"
fp = (svalue_t *) 0x8154bd8
sp = (svalue_t *) 0x8154c10
num_arg = -1
instruction = 446
full_instr = 1
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154c10
use_ap = false
#27 0x08097962 in eval_instruction (first_instruction=0xb10a340e "b\n:\n;\n<��c\0204k\abd��", initial_sp=0x0) at interpret.c:14796
prog = (program_t *) 0xb413d094
pc = (bytecode_p) 0xb10a3421 "c\030\031\210(\n�\001"
fp = (svalue_t *) 0x8154bd0
sp = (svalue_t *) 0x8154bd0
num_arg = 0
instruction = 166
full_instr = -1273752660
expected_stack = (svalue_t *) 0x8154bd8
ap = (svalue_t *) 0x8154bd8
use_ap = false
#28 0x080a8449 in apply_low (fun=0xb10a28ac, ob=0xac8c6040, num_arg=0, b_ign_prot=false, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0x81e6c40 "secure/master"
progp = (program_t *) 0xb29e9e10
save_csp = (struct control_stack *) 0xb4d19bb8
ix = 135613384
#29 0x0808a548 in int_apply (fun=0xb10a28ac, ob=0xac8c6040, num_arg=0, b_ign_prot=false, b_use_default=true) at interpret.c:17027
No locals.
#30 0x08097acb in eval_instruction (first_instruction=0xb2aa27e2 "a\004\005�", initial_sp=0x0) at interpret.c:16297
prog = (program_t *) 0xb413d094
pc = (bytecode_p) 0xb2aa2945 "c|\b*b\037"
fp = (svalue_t *) 0x8154b60
sp = (svalue_t *) 0x8154bc8
num_arg = 2
instruction = 188
full_instr = 5
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154bc0
use_ap = false
#31 0x08089f4d in int_call_lambda (lsvp=0x0, num_arg=3, allowRefs=false) at interpret.c:17913
i = 3
sp = (svalue_t *) 0x8154af0
l = (lambda_t *) 0xacf16320
#32 0x080f867b in v_limited (sp=0x0, num_arg=5) at simulate.c:5278
context = {rt = {last = 0xb4d1b540, type = -2}, max_array = 5000, max_mapping = 0, max_map_keys = 15000,
max_eval = 1500000, max_byte = 50000, max_file = 50000, max_callouts = 0, use_cost = -100, eval_cost = 8894}
argp = (svalue_t *) 0x8154ad0
vec = (vector_t *) 0x0
limits = {rt = {last = 0x18, type = 1}, max_array = 5000, max_mapping = 0, max_map_keys = 15000, max_eval = 3000000,
max_byte = 50000, max_file = 50000, max_callouts = 0, use_cost = 0, eval_cost = -1261329816}
cl_args = 3
#33 0x0809740c in eval_instruction (first_instruction=0xb2aa2972 "a\003\004\037", initial_sp=0x0) at interpret.c:8297
ob = (object_t *) 0x0
pc = (bytecode_p) 0xb2aa29e6 "c\a5cwF*b\n\001\037\004\017\017C+\n%+\037\004+d��"
fp = (svalue_t *) 0x8154a80
sp = (svalue_t *) 0x8154af0
num_arg = -1
instruction = 454
full_instr = 1
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154ad0
use_ap = false
#34 0x080a8449 in apply_low (fun=0xb422f00c, ob=0xb2a9f26c, num_arg=1, b_ign_prot=false, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0x81e6c40 "secure/master"
progp = (program_t *) 0xb2aa25fc
save_csp = (struct control_stack *) 0xb4d1a838
ix = 135613112
#35 0x0808a548 in int_apply (fun=0xb422f00c, ob=0xb2a9f26c, num_arg=1, b_ign_prot=false, b_use_default=true) at interpret.c:17027
No locals.
#36 0x08097acb in eval_instruction (first_instruction=0xb2bc7576 "a", initial_sp=0x0) at interpret.c:16297
prog = (program_t *) 0xb413d094
pc = (bytecode_p) 0xb2bc7729 "c]�k\vb\n\225\022\005d��"
fp = (svalue_t *) 0x8154a48
sp = (svalue_t *) 0x8154a80
num_arg = 3
instruction = 188
full_instr = 3
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154a70
use_ap = false
#37 0x080a8449 in apply_low (fun=0xb4218644, ob=0xacad9a48, num_arg=0, b_ign_prot=false, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0x6f2f6c6f <Address 0x6f2f6c6f out of bounds>
progp = (program_t *) 0xb2a0b05c
save_csp = (struct control_stack *) 0x6c726576
ix = 135613024
#38 0x0808a548 in int_apply (fun=0xb4218644, ob=0xacad9a48, num_arg=0, b_ign_prot=false, b_use_default=true) at interpret.c:17027
No locals.
#39 0x08097acb in eval_instruction (first_instruction=0xb42095ce "b\037", initial_sp=0x0) at interpret.c:16297
prog = (program_t *) 0xacad9a48
pc = (bytecode_p) 0xb42095dc "c]\031"
fp = (svalue_t *) 0x8154a28
sp = (svalue_t *) 0x8154a40
num_arg = 2
instruction = 188
full_instr = 5
expected_stack = (svalue_t *) 0x0
ap = (svalue_t *) 0x8154a38
use_ap = false
#40 0x080a8449 in apply_low (fun=0xb440d854, ob=0xb420bc68, num_arg=2, b_ign_prot=true, allowRefs=false) at interpret.c:16949
funstart = (fun_hdr_p) 0x2 <Address 0x2 out of bounds>
progp = (program_t *) 0xb4206014
save_csp = (struct control_stack *) 0xacad9a48
ix = 135612968
#41 0x0808a548 in int_apply (fun=0xb440d854, ob=0xb420bc68, num_arg=2, b_ign_prot=true, b_use_default=false) at interpret.c:17027
No locals.
#42 0x0808ac27 in sapply_int (fun=0xb440d854, ob=0xb420bc68, num_arg=2, b_find_static=true, b_use_default=false)
at interpret.c:17188
expected_sp = (svalue_t *) 0x8154a20
#43 0x0808b1aa in apply_master_ob (fun=0xb440d854, num_arg=2, external=true) at interpret.c:17491
eval_cost_reserve = 2048
reserve_used = false
error_recovery_info = {rt = {last = 0x81e6b80, type = 2}, flags = 0, con = {text = {{__jmpbuf = {-1398183788, 135612976,
-1397908920, -1261324792, -1261325040, 134787286}, __mask_was_saved = 0, __saved_mask = {__val = {3033642584, 134633702,
6, 2902374584, 4294967295, 144, 2968705080, 3021216620, 0, 0, 2904568100, 0, 0, 0, 0, 16777216, 134236760, 2896783689,
2896783684, 2896783688, 12, 0, 0, 0, 4294967291, 0, 135613072, 1, 2901228248, 2978177744, 4294967295, 4294967295}}}}}}
save_sp = (svalue_t *) 0x8154a30
save_csp = (struct control_stack *) 0x815c784
result = (svalue_t *) 0x0
#44 0x08062435 in remove_interactive (ob=0xacad9a48, force=false) at comm.c:3552
remaining = (string_t *) 0x0
numRemaining = 135612976
save = (object_t *) 0x0
i = 11
interactive = (interactive_t *) 0xaca96894
curobj_save = (object_t *) 0x0
save_privilege = 0
#45 0x08067ac5 in get_message (buff=0xb4d1bc90 "ende") at comm.c:2539
erqp = (svalue_t *) 0xaca96894
ob = (object_t *) 0xad130980
user = (wiz_list_t *) 0xffffffff
num_arg = 0
keep_handle = 177
msglen = 14
rest = -1
handle = 11
rp = 0x43fac5a0 "\204(��"
l = -1325266508
nfds = 13
res = 0
twait = 1
retries = -1
addr = {sin_family = 20425, sin_port = 2053, sin_addr = {s_addr = 0}, sin_zero = "���C\001\000\000"}
length = 16
timeout = {tv_sec = 0, tv_usec = 898000}
readfds = {fds_bits = {6144, 0 <repeats 31 times>}}
writefds = {fds_bits = {0 <repeats 32 times>}}
NextCmdGiver = -1
CmdsGiven = 0
i = 11
ip = (interactive_t *) 0xaca96894
exceptfds = {fds_bits = {-1321398588, 0, -1261323480, 0, -1261323472, -1261323120, -1261323400, 134539017, 135500444,
-1261323440, 1, -1261323456, 1139890882, 135612960, 69136, -1271033952, -1321398588, 0, -1261323448, 16777218, 136211328, -1,
-1397908920, 0, 0, 0, 1139886418, 135194048, 0, -1384541752, -1261323400, 134565564}}
#46 0x08055cde in backend () at backend.c:604
buff = "ende\000uch\000s tony\000rau hier\000ny\000entlich :)\000im echten\000gs funktioniert jedenfalls noch\000s?!\000e phase erinnern *G*\000ch ich den artikel am brett doch besser\000+send +send.href +send.hint +send.xch_cmd +send.xch_hi"...
prevent_object_cleanup = false
#47 0x080b7e2c in main (argc=21, argv=0xb4d1d6d4) at main.c:625
tmp = 0x1 <Address 0x1 out of bounds>
i = 0
set = {__val = {8192, 0 <repeats 31 times>}}
rc = 0
Makefile (26,371 bytes)
# TODO: Add some of the symbols in here to configure
# These lines are needed on some machines.
MAKE=make
SHELL=/bin/sh
INSTALL=/usr/bin/install -c
mkinstalldirs=$(SHELL) ./mkinstalldirs
#
CC=gcc -std=gnu99
CC_FOR_BUILD=$(CC)
#
YACC = bison -y
YACCTAB = y.tab.
#
RM = rm -f
MV = mv
CP = cp
#
# some standard stuff...
prefix= /mud
exec_prefix= ${prefix}
#
#
# Set MUD_LIB to the directory which contains the mud data.
MUD_LIB = /mud/mudlib
# Set MUD_LIB_INCLUDE to the directory where the driver include files
# shall live.
MUD_LIB_INCLUDE = ${prefix}/include
#
# Set BINDIR to the directory where you want to install the executables.
BINDIR = ${exec_prefix}/bin
#
# Set ERQ_DIR to directory which contains the stuff which ERQ can
# execute (hopefully) savely. Was formerly defined in config.h!
ERQ_DIR= /mud/erq
#
# Set MANDIR to the directory where to install the manpages.
MANDIR= ${prefix}/share/man
#
# Typical profiling, warning and optimizing options.
# -p -DMARK: together they enable customized profiling of VM instructions.
# MARK needs to be defined to a statement taking the
# instruction code as parameter; additionally interpret.c will
# #include "profile.h" for additional custom declarations.
#
# Additional profiling can be activated in config.h .
#PROFIL=-pg -DMARK
#PROFIL=-pg
PROFIL=
# Enable warnings from the compiler, if wanted.
NO_WARN= # no warning options - will work with all compilers :-)
GCC_WARN= -Wall -Wshadow -Wparentheses # gcc settings
CFG_WARN= -Wall -Wparentheses -Wshadow # Warn options discovered by configure
WARN= $(CFG_WARN)
# Optimization and source level debugging options.
# adding a -fomit-frame-pointer on the NeXT (gcc version 1.93 (68k, MIT syntax))
# will corrupt the driver.
HIGH_OPTIMIZE = -O4 -fomit-frame-pointer -g # high optimization
MED_OPTIMIZE= -O2 -g # medium optimization
LOW_OPTIMIZE = -O -g # minimal optimization
NO_OPTIMIZE= -g # no optimization; for frequent recompilations.
OPTIMIZE= $(MED_OPTIMIZE)
#
# Debugging options:
# Debugging options should be set in config.h to guarantee a clean
# recompile.
#DEBUG = -DDEBUG # -DDEBUG_TELNET
DEBUG=
# Flags for compiling the SFMT random number generator.
SFMT_FLAGS = -fno-strict-aliasing
# for machines with sse2 support you may use:
#SFMT_FLAGS = -msse2 -fno-strict-aliasing -DHAVE_SSE2=1
# for machines with altivec support you may use:
#SFMT_FLAGS = -faltivec -fno-strict-aliasing -DHAVE_ALTIVEC=1
#
MPATH=-DMUD_LIB='"$(MUD_LIB)"' -DBINDIR='"$(BINDIR)"' -DERQ_DIR='"$(ERQ_DIR)"'
#
CFLAGS= -I/usr/include/mysql $(OPTIMIZE) $(DEBUG) $(WARN) $(MPATH) $(PROFIL)
#
LIBS=-lnsl -lm -lcrypt -lidn -lgnutls -lpcre -lmysqlclient -L/lib -lsqlite3 -lz
#
LDFLAGS=$(PROFIL)
#
#Note that, if you use smalloc with SBRK_OK(which is the default), and
#don't link statically, it could happen that the system malloc is linked
#along with the one from smalloc; this combination is bound to cause crashes.
MFLAGS = "BINDIR=$(BINDIR)" "MUD_LIB=$(MUD_LIB)"
#
SRC = access_check.c actions.c array.c backend.c bitstrings.c call_out.c \
closure.c comm.c \
dumpstat.c ed.c efuns.c files.c gcollect.c hash.c heartbeat.c \
interpret.c \
lex.c main.c mapping.c md5.c mempools.c mregex.c mstrings.c object.c \
otable.c\
parser.c parse.c pkg-alists.c pgk-iksemel.c pkg-idna.c \
pkg-mccp.c pkg-mysql.c pkg-pcre.c \
pkg-pgsql.c pkg-sqlite.c pkg-stringcompiler.c pkg-tls.c \
ptmalloc.c port.c ptrtable.c \
random.c regexp.c sha1.c simulate.c simul_efun.c stdstrings.c \
strfuns.c structs.c sprintf.c swap.c wiz_list.c xalloc.c
OBJ = access_check.o actions.o array.o backend.o bitstrings.o call_out.o \
closure.o comm.o \
dumpstat.o ed.o efuns.o files.o gcollect.o hash.o heartbeat.o \
interpret.o \
lex.o main.o mapping.o md5.o mempools.o mregex.o mstrings.o object.o \
otable.o \
parser.o parse.o pkg-alists.o pkg-iksemel.o pkg-idna.o \
pkg-mccp.o pkg-mysql.o pkg-pcre.o \
pkg-pgsql.o pkg-sqlite.o pkg-stringcompiler.o pkg-tls.o \
ptmalloc.o port.o ptrtable.o \
random.o regexp.o sha1.o simulate.o simul_efun.o stdstrings.o \
strfuns.o structs.o sprintf.o swap.o wiz_list.o xalloc.o
all: make-patchlevel ldmud
ldmud: $(OBJ)
$(CC) $(OPTIMIZE) $(LDFLAGS) $(OBJ) -o $@ $(LIBS)
docs: ldmud
-help2man --name=ldmud -N --help-option=--longhelp --include=ldmud-man.txt --output=../doc/man/ldmud.1 ./ldmud
install-all: install-driver install-headers install-utils
install: install-driver
@echo "To install header files, use 'make install-headers'."
@echo "To install utility programs (incl. erq), use 'make install-utils'."
@echo "To install everything in one go, use 'make install-all'."
install-driver: ldmud docs
$(mkinstalldirs) $(BINDIR) $(MANDIR)/man1
$(INSTALL) -c ldmud $(BINDIR)/ldmud
$(INSTALL) -c ../doc/man/ldmud.1 $(MANDIR)/man1/ldmud.1
install-headers:
$(mkinstalldirs) $(MUD_LIB_INCLUDE)
$(INSTALL) -c ../mudlib/sys/* $(MUD_LIB_INCLUDE)
install-utils:
(cd util; $(MAKE) $(MFLAGS) install)
utils:
(cd util; $(MAKE) $(MFLAGS))
lint: *.c
lint *.c
clean:
$(RM) $(YACCTAB)h $(YACCTAB)c make_func.c *.o mkfunc$(EXEEXT)
$(RM) dftables$(EXEEXT) pcre/chartables.c
$(RM) stdstrings.c stdstrings.h
$(RM) efun_defs.c instrs.h lang.y lang.h lang.c y.output tags TAGS
$(RM) ldmud core mudlib/core mudlib/debug.log lpmud.log
(cd util ; echo "Cleaning in util." ; $(MAKE) clean)
distclean: clean
$(RM) ldmud config.status machine.h Makefile config.cache config.log
$(RM) config.h config.status config.status.old
$(RM) util/Makefile util/erq/Makefile util/xerq/Makefile util/indent/Makefile
tags: $(SRC)
ctags $(SRC)
TAGS: $(SRC)
etags $(SRC)
patchlevel.h : make-patchlevel
make-patchlevel:
./mk-patchlevel.sh
make_func.c: make_func.y
$(YACC) make_func.y
$(MV) $(YACCTAB)c make_func.c
hash_b.o : hash.h
$(CC_FOR_BUILD) $(CFLAGS) -c hash.c -o hash_b.o
mkfunc.o : make_func.c ../mudlib/sys/driver_hook.h hash.h exec.h \
my-alloca.h driver.h bytecode.h typedefs.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
$(CC_FOR_BUILD) $(CFLAGS) -c mkfunc.c
mkfunc$(EXEEXT): mkfunc.o hash_b.o exec.h
$(CC_FOR_BUILD) $(OPTIMIZE) $(LDFLAGS) mkfunc.o hash_b.o -o mkfunc$(EXEEXT)
dftables.o : pcre/dftables.c pcre/maketables.c pcre/config.h
$(CC_FOR_BUILD) $(CFLAGS) -c pcre/dftables.c -o dftables.o
dftables$(EXEEXT) : dftables.o
$(CC_FOR_BUILD) $(OPTIMIZE) $(LDFLAGS) dftables.o -o dftables$(EXEEXT)
lang.y: mkfunc$(EXEEXT) prolang.y config.h
$(RM) lang.y
./mkfunc$(EXEEXT) lang
efun_defs.c instrs.h: func_spec mkfunc$(EXEEXT) config.h machine.h
$(RM) instrs.h
$(RM) efun_defs.c
./mkfunc$(EXEEXT) instrs
stdstrings.c stdstrings.h: string_spec mkfunc$(EXEEXT) config.h machine.h
$(RM) stdstrings.c
$(RM) stdstrings.h
./mkfunc$(EXEEXT) strings
lang.c lang.h: lang.y
$(YACC) -d -v lang.y
$(MV) $(YACCTAB)c lang.c
$(MV) $(YACCTAB)h lang.h
pcre/chartables.c : dftables$(EXEEXT)
./dftables$(EXEEXT) pcre/chartables.c
random.o : random.c config.h driver.h
$(CC) $(CFLAGS) $(SFMT_FLAGS) -c random.c -o random.o
#--------------------------------------------------------
# The dependency generation uses the program 'mkdepend' and assumes GNUmake.
# Generated source files (overlaps with of SRC) which need to be
# present for mkdepend to work.
GENSRC = make_func.c stdstrings.c lang.c instrs.h pcre/chartables.c
# Macros for MkDepend:
SKELETON = $(SRC) mkfunc.c pcre/dftables.c
EXCEPT = -x efun_defs.c
SELECT = -S instrs.h -S stdstrings.h -S make_func.c -S lang.c -S lang.h -S efun_defs.c
depend: $(SRC) $(GENSRC)
@$(SHELL) -ec "if type mkdepend > /dev/null 2>&1; then \
echo Updating dependencies.; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) -m -p .c:%n.o -fMakefile; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) $(SELECT) -m -p .c:%n.o -fMakefile; \
echo Updating dependencies in Makefile.in.; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) -m -p .c:%n.o -fMakefile.in; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) $(SELECT) -m -p .c:%n.o -fMakefile.in; \
else\
echo mkdepend utility not available.; \
fi"
.PHONY dependall: depend depend-generic
depend-generic: $(SRC) $(GENSRC)
@$(SHELL) -ec "if type mkdepend > /dev/null 2>&1; then \
echo Updating dependencies in hosts/be/Makefile.; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
mkdepend $(SKELETON) -I. -Ipcre -Iptmalloc $(EXCEPT) $(SELECT) -m -p .c:$$\(OBJ\)/%n.o -fhosts/be/Makefile; \
else\
echo mkdepend utility not available.; \
fi"
#--------------------------------------------------------
# Dependencies, manual and automatic.
# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS FOLLOW ---
access_check.o : xalloc.h filestat.h comm.h access_check.h driver.h \
svalue.h strfuns.h pkg-tls.h simulate.h typedefs.h config.h port.h \
sent.h bytecode.h hosts/unix.h hosts/be/be.h machine.h
actions.o : ../mudlib/sys/driver_hook.h ../mudlib/sys/commands.h xalloc.h \
wiz_list.h svalue.h simulate.h sent.h stdstrings.h object.h mstrings.h \
mapping.h interpret.h efuns.h dumpstat.h comm.h closure.h backend.h \
array.h actions.h my-alloca.h typedefs.h driver.h strfuns.h bytecode.h \
hash.h pkg-tls.h main.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
array.o : i-svalue_cmp.h xalloc.h wiz_list.h swap.h svalue.h simulate.h \
stdstrings.h object.h mstrings.h mempools.h mapping.h main.h \
interpret.h closure.h backend.h array.h my-alloca.h typedefs.h driver.h \
strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
backend.o : ../mudlib/sys/debug_message.h ../mudlib/sys/driver_hook.h \
i-eval_cost.h xalloc.h wiz_list.h swap.h svalue.h stdstrings.h \
simulate.h random.h otable.h object.h mstrings.h mregex.h mapping.h \
main.h lex.h interpret.h heartbeat.h gcollect.h filestat.h exec.h ed.h \
comm.h closure.h call_out.h array.h actions.h backend.h my-alloca.h \
typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h pkg-tls.h port.h \
config.h hosts/unix.h hosts/be/be.h machine.h
bitstrings.o : xalloc.h svalue.h simulate.h mstrings.h interpret.h \
bitstrings.h typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h \
backend.h port.h config.h main.h hosts/unix.h hosts/be/be.h machine.h
call_out.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h \
swap.h svalue.h strfuns.h stdstrings.h simulate.h object.h mstrings.h \
main.h interpret.h gcollect.h exec.h comm.h closure.h backend.h array.h \
actions.h call_out.h typedefs.h driver.h sent.h bytecode.h hash.h \
pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
closure.o : i-svalue_cmp.h xalloc.h switch.h swap.h svalue.h structs.h \
stdstrings.h simul_efun.h simulate.h prolang.h object.h mstrings.h \
main.h lex.h interpret.h instrs.h exec.h backend.h array.h closure.h \
my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h sent.h \
bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
comm.o : util/erq/erq.h ../mudlib/sys/input_to.h \
../mudlib/sys/driver_hook.h ../mudlib/sys/comm.h i-eval_cost.h xalloc.h \
wiz_list.h swap.h svalue.h stdstrings.h simulate.h sent.h pkg-tls.h \
pkg-pgsql.h pkg-mccp.h object.h mstrings.h main.h interpret.h \
gcollect.h filestat.h exec.h ed.h closure.h array.h actions.h \
access_check.h comm.h ../mudlib/sys/telnet.h my-alloca.h typedefs.h \
driver.h strfuns.h bytecode.h hash.h backend.h config.h port.h \
hosts/unix.h hosts/be/be.h machine.h
dumpstat.o : xalloc.h svalue.h structs.h stdstrings.h simulate.h ptrtable.h \
object.h mstrings.h mapping.h instrs.h filestat.h exec.h closure.h \
array.h dumpstat.h typedefs.h driver.h strfuns.h hash.h sent.h \
bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
ed.o : ../mudlib/sys/regexp.h xalloc.h svalue.h stdstrings.h simulate.h \
object.h mstrings.h mregex.h main.h lex.h interpret.h gcollect.h \
filestat.h comm.h actions.h ed.h typedefs.h driver.h strfuns.h sent.h \
bytecode.h hash.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
efuns.o : ../mudlib/sys/time.h ../mudlib/sys/strings.h \
../mudlib/sys/regexp.h ../mudlib/sys/objectinfo.h \
../mudlib/sys/driver_hook.h ../mudlib/sys/debug_info.h i-eval_cost.h \
xalloc.h wiz_list.h svalue.h swap.h structs.h strfuns.h simulate.h \
stdstrings.h sha1.h random.h ptrtable.h otable.h object.h mstrings.h \
mregex.h md5.h mempools.h mapping.h main.h lex.h interpret.h \
heartbeat.h exec.h dumpstat.h comm.h closure.h call_out.h backend.h \
array.h actions.h efuns.h my-rusage.h my-alloca.h typedefs.h driver.h \
hash.h sent.h bytecode.h my-stdint.h pkg-tls.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
files.o : ../mudlib/sys/files.h xalloc.h svalue.h stdstrings.h simulate.h \
mstrings.h mempools.h main.h lex.h interpret.h filestat.h comm.h \
array.h files.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
bytecode.h hash.h backend.h pkg-tls.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
gcollect.o : ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h wiz_list.h \
swap.h structs.h stdstrings.h simul_efun.h simulate.h sent.h random.h \
ptrtable.h prolang.h pkg-pgsql.h parse.h otable.h object.h mstrings.h \
mregex.h mempools.h mapping.h main.h lex.h instrs.h interpret.h \
heartbeat.h filestat.h ed.h comm.h closure.h call_out.h backend.h \
array.h actions.h gcollect.h typedefs.h driver.h svalue.h strfuns.h \
hash.h exec.h bytecode.h pkg-tls.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
hash.o : hash.h
heartbeat.o : ../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h \
svalue.h strfuns.h simulate.h sent.h object.h mstrings.h interpret.h \
gcollect.h exec.h comm.h backend.h array.h actions.h heartbeat.h \
typedefs.h driver.h bytecode.h hash.h pkg-tls.h main.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
interpret.o : ../mudlib/sys/debug_info.h ../mudlib/sys/driver_hook.h \
i-eval_cost.h xalloc.h wiz_list.h switch.h swap.h svalue.h structs.h \
stdstrings.h simul_efun.h simulate.h prolang.h parse.h otable.h \
object.h mstrings.h mapping.h lex.h instrs.h heartbeat.h gcollect.h \
filestat.h exec.h efuns.h ed.h comm.h closure.h call_out.h backend.h \
array.h actions.h interpret.h my-alloca.h typedefs.h driver.h strfuns.h \
hash.h ptrtable.h sent.h bytecode.h pkg-tls.h main.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
lex.o : efun_defs.c ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
wiz_list.h svalue.h strfuns.h stdstrings.h simul_efun.h simulate.h \
prolang.h patchlevel.h object.h mstrings.h mempools.h main.h lang.h \
interpret.h instrs.h hash.h gcollect.h filestat.h exec.h comm.h \
closure.h backend.h array.h lex.h my-alloca.h typedefs.h driver.h \
ptrtable.h sent.h bytecode.h pkg-tls.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
main.o : ../mudlib/sys/regexp.h i-eval_cost.h pkg-mysql.h xalloc.h \
wiz_list.h swap.h svalue.h stdstrings.h simul_efun.h simulate.h \
random.h pkg-tls.h patchlevel.h otable.h object.h mstrings.h mregex.h \
mempools.h mapping.h lex.h interpret.h gcollect.h filestat.h comm.h \
array.h backend.h main.h my-alloca.h typedefs.h driver.h strfuns.h \
ptrtable.h exec.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
mapping.o : i-svalue_cmp.h xalloc.h wiz_list.h svalue.h structs.h \
simulate.h object.h mstrings.h main.h interpret.h gcollect.h closure.h \
backend.h array.h mapping.h my-alloca.h typedefs.h driver.h strfuns.h \
hash.h exec.h sent.h bytecode.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
md5.o : strfuns.h md5.h machine.h typedefs.h driver.h port.h config.h \
hosts/unix.h hosts/be/be.h
mempools.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
simulate.h gcollect.h mempools.h driver.h typedefs.h sent.h bytecode.h \
port.h config.h hosts/unix.h hosts/be/be.h machine.h
mregex.o : ../mudlib/sys/regexp.h ../mudlib/sys/driver_hook.h \
../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h simulate.h \
regexp.h pkg-pcre.h mstrings.h main.h interpret.h hash.h gcollect.h \
comm.h mregex.h driver.h typedefs.h sent.h bytecode.h pcre/pcre.h \
backend.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
mstrings.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h strfuns.h \
stdstrings.h simulate.h main.h hash.h gcollect.h mstrings.h driver.h \
typedefs.h sent.h bytecode.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
object.o : ../mudlib/sys/inherit_list.h ../mudlib/sys/include_list.h \
../mudlib/sys/functionlist.h ../mudlib/sys/driver_hook.h xalloc.h \
wiz_list.h svalue.h swap.h structs.h strfuns.h stdstrings.h \
simul_efun.h simulate.h sent.h random.h ptrtable.h prolang.h otable.h \
mstrings.h mempools.h mapping.h main.h lex.h instrs.h interpret.h \
filestat.h comm.h closure.h backend.h array.h actions.h object.h \
my-alloca.h typedefs.h driver.h ../mudlib/sys/lpctypes.h hash.h exec.h \
bytecode.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
otable.o : ../mudlib/sys/debug_info.h xalloc.h svalue.h simulate.h \
strfuns.h object.h mstrings.h hash.h gcollect.h backend.h otable.h \
typedefs.h driver.h sent.h bytecode.h main.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
parse.o : xalloc.h wiz_list.h svalue.h stdstrings.h simulate.h object.h \
mstrings.h main.h lex.h interpret.h gcollect.h array.h actions.h \
parse.h typedefs.h driver.h strfuns.h sent.h bytecode.h hash.h \
backend.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
parser.o : lang.c ../mudlib/sys/driver_hook.h i-eval_cost.h xalloc.h \
wiz_list.h switch.h swap.h svalue.h structs.h stdstrings.h simul_efun.h \
simulate.h object.h mstrings.h mapping.h main.h lex.h instrs.h \
interpret.h gcollect.h exec.h closure.h backend.h array.h prolang.h \
my-alloca.h typedefs.h driver.h strfuns.h hash.h ptrtable.h sent.h \
bytecode.h port.h config.h hosts/unix.h hosts/be/be.h machine.h
dftables.o : pcre/maketables.c pcre/internal.h pcre/pcre.h pcre/config.h
pkg-alists.o : i-svalue_cmp.h xalloc.h svalue.h simulate.h mstrings.h \
main.h interpret.h array.h my-alloca.h pkg-alists.h typedefs.h driver.h \
closure.h strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
pkg-idna.o : ../mudlib/sys/idn.h xalloc.h simulate.h mstrings.h interpret.h \
typedefs.h pkg-idna.h driver.h svalue.h strfuns.h sent.h bytecode.h \
hash.h backend.h port.h config.h main.h hosts/unix.h hosts/be/be.h \
machine.h
pkg-mccp.o : ../mudlib/sys/telnet.h xalloc.h svalue.h object.h mstrings.h \
comm.h array.h pkg-mccp.h typedefs.h driver.h strfuns.h sent.h hash.h \
pkg-tls.h simulate.h port.h config.h bytecode.h hosts/unix.h \
hosts/be/be.h machine.h
pkg-mysql.o : xalloc.h svalue.h stdstrings.h simulate.h mstrings.h main.h \
instrs.h interpret.h array.h pkg-mysql.h my-alloca.h typedefs.h \
driver.h strfuns.h sent.h bytecode.h hash.h exec.h backend.h port.h \
config.h hosts/unix.h hosts/be/be.h machine.h
pkg-pcre.o : pcre/study.c pcre/maketables.c pcre/get.c pcre/pcre.c \
simulate.h interpret.h pkg-pcre.h driver.h pcre/internal.h \
pcre/chartables.c svalue.h strfuns.h sent.h bytecode.h typedefs.h \
backend.h pcre/pcre.h port.h config.h pcre/config.h main.h hosts/unix.h \
hosts/be/be.h machine.h
pkg-pgsql.o : ../mudlib/sys/pgsql.h xalloc.h stdstrings.h simulate.h \
mstrings.h mapping.h main.h interpret.h instrs.h gcollect.h array.h \
actions.h pkg-pgsql.h my-alloca.h typedefs.h driver.h svalue.h \
strfuns.h sent.h bytecode.h hash.h backend.h exec.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
pkg-sqlite.o : xalloc.h stdstrings.h object.h svalue.h simulate.h \
mstrings.h interpret.h array.h my-alloca.h typedefs.h driver.h \
strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h main.h \
hosts/unix.h hosts/be/be.h machine.h
pkg-stringcompiler.o : xalloc.h stdstrings.h object.h svalue.h simulate.h \
mstrings.h interpret.h array.h my-alloca.h typedefs.h driver.h \
strfuns.h sent.h bytecode.h hash.h backend.h port.h config.h main.h \
hosts/unix.h hosts/be/be.h machine.h
pkg-tls.o : ../mudlib/sys/tls.h xalloc.h svalue.h sha1.h object.h \
mstrings.h main.h interpret.h comm.h array.h actions.h pkg-tls.h \
machine.h driver.h strfuns.h typedefs.h my-stdint.h sent.h hash.h \
bytecode.h backend.h simulate.h port.h config.h hosts/unix.h \
hosts/be/be.h
port.o : hosts/crypt.c main.h backend.h my-rusage.h driver.h machine.h \
typedefs.h port.h config.h hosts/unix.h hosts/be/be.h
ptmalloc.o : ptmalloc/malloc.c machine.h config.h ptmalloc/hooks.c \
ptmalloc/arena.c ptmalloc/thread-m.h ptmalloc/malloc.h \
ptmalloc/config.h
ptrtable.o : simulate.h mempools.h ptrtable.h driver.h svalue.h strfuns.h \
sent.h bytecode.h typedefs.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
random.o : random.h driver.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
regexp.o : i-eval_cost.h main.h xalloc.h simulate.h regexp.h driver.h \
interpret.h typedefs.h svalue.h strfuns.h sent.h bytecode.h pkg-pcre.h \
port.h config.h backend.h pcre/pcre.h hosts/unix.h hosts/be/be.h \
machine.h
sha1.o : sha1.h my-stdint.h driver.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
simul_efun.o : xalloc.h swap.h svalue.h stdstrings.h simulate.h prolang.h \
ptrtable.h object.h mstrings.h lex.h interpret.h gcollect.h exec.h \
array.h simul_efun.h my-alloca.h typedefs.h driver.h strfuns.h sent.h \
bytecode.h hash.h backend.h port.h config.h main.h hosts/unix.h \
hosts/be/be.h machine.h
simulate.o : ../mudlib/sys/rtlimits.h ../mudlib/sys/regexp.h \
../mudlib/sys/files.h ../mudlib/sys/driver_hook.h \
../mudlib/sys/debug_info.h i-eval_cost.h xalloc.h wiz_list.h svalue.h \
swap.h structs.h strfuns.h stdstrings.h simul_efun.h sent.h prolang.h \
pkg-sqlite.h pkg-tls.h otable.h object.h mstrings.h mregex.h mempools.h \
mapping.h main.h lex.h heartbeat.h gcollect.h filestat.h ed.h comm.h \
closure.h call_out.h backend.h array.h actions.h simulate.h my-alloca.h \
typedefs.h driver.h interpret.h hash.h exec.h ptrtable.h bytecode.h \
port.h config.h hosts/unix.h hosts/be/be.h machine.h
sprintf.o : xalloc.h swap.h svalue.h structs.h stdstrings.h simul_efun.h \
simulate.h sent.h random.h ptrtable.h object.h mstrings.h mapping.h \
main.h interpret.h comm.h closure.h array.h actions.h sprintf.h \
my-alloca.h typedefs.h driver.h strfuns.h hash.h exec.h bytecode.h \
backend.h pkg-tls.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
stdstrings.o : mstrings.h stdstrings.h typedefs.h driver.h hash.h port.h \
config.h hosts/unix.h hosts/be/be.h machine.h
strfuns.o : xalloc.h svalue.h stdstrings.h simulate.h object.h mstrings.h \
mapping.h main.h interpret.h comm.h strfuns.h my-alloca.h typedefs.h \
driver.h sent.h bytecode.h hash.h backend.h pkg-tls.h port.h config.h \
hosts/unix.h hosts/be/be.h machine.h
structs.o : ../mudlib/sys/struct_info.h ../mudlib/sys/debug_info.h xalloc.h \
wiz_list.h stdstrings.h simulate.h object.h mstrings.h mapping.h main.h \
interpret.h gcollect.h exec.h array.h structs.h driver.h \
../mudlib/sys/lpctypes.h svalue.h strfuns.h typedefs.h sent.h \
bytecode.h hash.h backend.h port.h config.h hosts/unix.h hosts/be/be.h \
machine.h
swap.o : ../mudlib/sys/debug_info.h xalloc.h wiz_list.h svalue.h structs.h \
strfuns.h stdstrings.h simul_efun.h simulate.h random.h prolang.h \
otable.h object.h mstrings.h mempools.h mapping.h main.h interpret.h \
gcollect.h comm.h closure.h backend.h array.h swap.h typedefs.h \
driver.h hash.h exec.h ptrtable.h sent.h bytecode.h pkg-tls.h port.h \
config.h hosts/unix.h hosts/be/be.h machine.h
wiz_list.o : xalloc.h svalue.h stdstrings.h simulate.h object.h mstrings.h \
mapping.h main.h interpret.h gcollect.h backend.h array.h \
../mudlib/sys/wizlist.h wiz_list.h my-alloca.h typedefs.h driver.h \
strfuns.h sent.h bytecode.h hash.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
xalloc.o : xptmalloc.c sysmalloc.c slaballoc.c smalloc.c mstrings.h \
object.h exec.h simulate.h interpret.h gcollect.h backend.h xalloc.h \
driver.h ../mudlib/sys/debug_info.h ptmalloc/malloc.h svalue.h \
stdstrings.h sysmalloc.h array.h slaballoc.h typedefs.h smalloc.h \
hash.h sent.h bytecode.h strfuns.h main.h port.h config.h hosts/unix.h \
hosts/be/be.h machine.h
# --- DO NOT MODIFY THIS LINE -- AUTO-DEPENDS PRECEDE ---
# --- DO NOT MODIFY THIS LINE -- SELECTED AUTO-DEPENDS FOLLOW ---
actions.o : stdstrings.h
array.o : stdstrings.h
backend.o : stdstrings.h
call_out.o : stdstrings.h
closure.o : stdstrings.h instrs.h
comm.o : stdstrings.h
dumpstat.o : stdstrings.h instrs.h
ed.o : stdstrings.h
efuns.o : stdstrings.h
files.o : stdstrings.h
gcollect.o : stdstrings.h instrs.h
interpret.o : stdstrings.h instrs.h
lex.o : efun_defs.c stdstrings.h lang.h instrs.h
main.o : stdstrings.h
mkfunc.o : make_func.c
mstrings.o : stdstrings.h
object.o : stdstrings.h instrs.h
parse.o : stdstrings.h
parser.o : lang.c stdstrings.h instrs.h
pkg-mysql.o : stdstrings.h instrs.h
pkg-pgsql.o : stdstrings.h instrs.h
pkg-sqlite.o : stdstrings.h
simul_efun.o : stdstrings.h
simulate.o : stdstrings.h
sprintf.o : stdstrings.h
stdstrings.o : stdstrings.h
strfuns.o : stdstrings.h
structs.o : stdstrings.h
swap.o : stdstrings.h
wiz_list.o : stdstrings.h
xalloc.o : stdstrings.h
# --- DO NOT MODIFY THIS LINE -- SELECTED AUTO-DEPENDS PRECEDE ---
save_object_crash.diff (520 bytes)
Index: src/object.c
===================================================================
--- src/object.c (Revision 2490)
+++ src/object.c (Arbeitskopie)
@@ -6906,9 +6906,9 @@
* data pending in the save_buffer.
*/
- /* free the error handler and the arguments (numarg + 1 from sp).
+ /* free the arguments (numarg from sp).
*/
- sp = pop_n_elems(numarg + 1, sp);
+ sp = pop_n_elems(numarg, sp);
sp++; /* for the result */
if (failed)
| ||||
|
|
Ups, forgotten to append the debug.log: 2009.01.15 22:03:18 Bad stack at F_RETURN, 1 values too low 2009.01.15 22:03:18 Current object was obj/money#1852 2009.01.15 22:03:18 Dump of the call chain: ' disconnect' in 'secure/master.c (/secure/master/connections.inc)' (' secure/master') line 270 ' net_dead' in ' i/player/login.c' (' obj/jnaii#1660') line 1596 ' dosave' in ' apps/dasaved.c' (' apps/dasaved') line 218 ' rsave' in ' apps/dasaved.c' (' apps/dasaved') line 112 ' rsave' in ' apps/dasaved.c' (' apps/dasaved') line 152 ' save_item' in ' i/item.c' (' obj/money#1852') line 412 ' save_object' in 'secure/simul_efun/simul_efun.c (/secure/simul_efun/save.inc)' ('secure/simul_efun/simul_efun') line 53 #'save_object for ' i/money/money.c' (' obj/money#1852') |
|
|
Calling save_object without a filename crashes, because in this case no error handler will be put on the stack (none is needed), but afterwards save_object tries to remove the error handler from the stack. The attached patch fixes this. |
|
|
Committed as r2498. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2009-01-15 15:35 | peng | New Issue | |
| 2009-01-15 15:35 | peng | File Added: backtrace_20090115.txt | |
| 2009-01-15 15:37 | peng | Note Added: 0000894 | |
| 2009-01-15 16:20 | peng | File Added: config.h | |
| 2009-01-15 16:21 | peng | File Added: machine.h | |
| 2009-01-15 16:21 | peng | File Added: Makefile | |
| 2009-01-16 04:15 | Gnomi | File Added: save_object_crash.diff | |
| 2009-01-16 04:19 | Gnomi | Note Added: 0000895 | |
| 2009-01-16 04:19 | Gnomi | Assigned To | => Gnomi |
| 2009-01-16 04:19 | Gnomi | Priority | normal => high |
| 2009-01-16 04:19 | Gnomi | Reproducibility | have not tried => always |
| 2009-01-16 04:19 | Gnomi | Status | new => assigned |
| 2009-01-16 04:19 | Gnomi | Target Version | => 3.3.719 |
| 2009-01-16 17:02 | Gnomi | Note Added: 0000910 | |
| 2009-01-16 17:02 | Gnomi | Status | assigned => resolved |
| 2009-01-16 17:02 | Gnomi | Fixed in Version | => 3.3.719 |
| 2009-01-16 17:02 | Gnomi | Resolution | open => fixed |
| 2010-11-16 09:42 | Gnomi | Source_changeset_attached | => ldmud.git master e6ac517e |
| 2018-01-29 18:59 | Gnomi | Source_changeset_attached | => ldmud.git master e6ac517e |
| 2018-01-29 21:57 | Gnomi | Source_changeset_attached | => ldmud.git master e6ac517e |