This is the mail archive of the xconq7@sources.redhat.com mailing list for the Xconq project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: scorekeeping and materials


On Sat, 8 May 2004, Eric McDonald wrote:
> The present combat system already allows dice specs to specify damage,
> and the dice rolls are 0-based, IIRC. So, if you say:

They are.  That's a little confusing for someone accustomed to standard
paper-and-dice RPGs, where the same syntax has a different meaning (1d6 =
a uniform random integer from 1 to 6), and I was disappointed that it
can't do d20, let alone d100, because of bit field width limitations, but
at least it's documented.

> make sure you have gdb installed. Then run Xconq in gdb, reproduce the
> crash, and then do a "bt" at the gdb prompt. That will display a

Okay, here's a stack trace from loading crasher.g (as a regular game, not
in the designer) and then immediately selecting "save".  Made under Linux
on a PC, kernel 2.6.4, gcc 3.2.2, current XConq CVS version as of a couple
days ago.  The behaviour under the debugger was actually slightly
different from what I've observed without the debugger - namely, it just
gave me a segfault immediately without popping up error boxes in the GUI
first.

#0  0x080dc5a5 in write_side_view (side=0x8344ae0, compress=0) at write.c:1765
#1  0x080da0e0 in write_sides (module=0x81d3228) at write.c:1415
#2  0x080d717b in write_game_module (module=0x81d3228, fname=0x40515a6f "\n")
    at write.c:302
#3  0x080d6fb0 in write_entire_game_state (fname=0x85c5d48 "crasher-1.xcq")
    at write.c:212
#4  0x08142ca4 in net_save_game (fname=0x85c5d48 "crasher-1.xcq") at tp.c:739
#5  0x080534a4 in tk_game_save (cldata=0x0, interp=0x81d6af0, argc=2, argv=0x0)
    at tkmain.c:3239
#6  0x40131cbb in TclInvokeStringCommand () from /usr/lib/libtcl8.4.so
#7  0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#8  0x4015724e in TclExecuteByteCode () from /usr/lib/libtcl8.4.so
#9  0x40156920 in TclCompEvalObj () from /usr/lib/libtcl8.4.so
#10 0x401858e4 in TclObjInterpProc () from /usr/lib/libtcl8.4.so
#11 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#12 0x40133747 in Tcl_EvalEx () from /usr/lib/libtcl8.4.so
#13 0x40133b13 in Tcl_Eval () from /usr/lib/libtcl8.4.so
#14 0x4013509f in Tcl_GlobalEval () from /usr/lib/libtcl8.4.so
#15 0x08054c71 in eval_tcl_cmd (fmt=0x40515a6f "\n") at tkmain.c:3799
#16 0x0805cf3b in do_save (side=0x8344ae0) at tkcmd.c:1549
#17 0x0813b24f in execute_long_command (side=0x8344ae0,
    cmdstr=0x401b2e7c "\220\r\n") at cmd.c:139
#18 0x0805344e in tk_execute_long_command (cldata=0x0, interp=0x81d6af0,
    argc=3, argv=0x0) at tkmain.c:3230
#19 0x40131cbb in TclInvokeStringCommand () from /usr/lib/libtcl8.4.so
#20 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#21 0x4015724e in TclExecuteByteCode () from /usr/lib/libtcl8.4.so
#22 0x40156920 in TclCompEvalObj () from /usr/lib/libtcl8.4.so
#23 0x40133ca1 in Tcl_EvalObjEx () from /usr/lib/libtcl8.4.so
#24 0x4021dc56 in TkInvokeMenu () from /usr/lib/libtk8.4.so
#25 0x4021d76e in MenuWidgetObjCmd () from /usr/lib/libtk8.4.so
#26 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#27 0x40132fbe in Tcl_EvalObjv () from /usr/lib/libtcl8.4.so
#28 0x40133c44 in Tcl_EvalObjEx () from /usr/lib/libtcl8.4.so
#29 0x40185245 in Tcl_UplevelObjCmd () from /usr/lib/libtcl8.4.so
#30 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#31 0x4015724e in TclExecuteByteCode () from /usr/lib/libtcl8.4.so
#32 0x40156920 in TclCompEvalObj () from /usr/lib/libtcl8.4.so
#33 0x401858e4 in TclObjInterpProc () from /usr/lib/libtcl8.4.so
#34 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#35 0x40133747 in Tcl_EvalEx () from /usr/lib/libtcl8.4.so
#36 0x40133b13 in Tcl_Eval () from /usr/lib/libtcl8.4.so
#37 0x4013509f in Tcl_GlobalEval () from /usr/lib/libtcl8.4.so
#38 0x401ce04a in Tk_BindEvent () from /usr/lib/libtk8.4.so
#39 0x401d3c87 in TkBindEventProc () from /usr/lib/libtk8.4.so
#40 0x401db293 in Tk_HandleEvent () from /usr/lib/libtk8.4.so
#41 0x401db6ed in WindowEventProc () from /usr/lib/libtk8.4.so
#42 0x4017bcaa in Tcl_ServiceEvent () from /usr/lib/libtcl8.4.so
#43 0x4017bf1a in Tcl_DoOneEvent () from /usr/lib/libtcl8.4.so
#44 0x0804fae5 in ui_mainloop () at tkmain.c:1967
#45 0x0804adfd in main (argc=0, argv=0x0) at tkunix.c:126
#46 0x402c1bb4 in __libc_start_main () from /lib/libc.so.6

And here's one from loading crasher.g and playing (moving the single unit
around more or less at random) until it asserts on turn 18:

#0  0x402d5c31 in kill () from /lib/libc.so.6
#1  0x402d58b8 in raise () from /lib/libc.so.6
#2  0x402d717c in abort () from /lib/libc.so.6
#3  0x402cec2a in __assert_fail () from /lib/libc.so.6
#4  0x080979a4 in check_change_type_action (unit=0x81ca8b0, unit2=0x81ca8b0,
    u3=-1) at actions.c:3245
#5  0x0809a324 in execute_action (unit=0x81ca8b0, action=0x83bb658)
    at actions.c:3773
#6  0x080ad9b0 in move_one_unit_multiple (unit=0x81ca8b0, lim=1) at run.c:998
#7  0x080ad369 in side_move_some_units (side=0x83451f8, lim=1) at run.c:821
#8  0x080ad09c in move_some_units (lim=1) at run.c:741
#9  0x080ac59d in run_game (maxactions=1) at run.c:303
#10 0x08142a0e in net_run_game (maxactions=136095920) at tp.c:657
#11 0x0804dd7b in tk_run_game (cldata=0x0, interp=0x0, argc=0, argv=0x0)
    at tkmain.c:1424
#12 0x40131cbb in TclInvokeStringCommand () from /usr/lib/libtcl8.4.so
#13 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#14 0x4015724e in TclExecuteByteCode () from /usr/lib/libtcl8.4.so
#15 0x40156920 in TclCompEvalObj () from /usr/lib/libtcl8.4.so
#16 0x401858e4 in TclObjInterpProc () from /usr/lib/libtcl8.4.so
#17 0x40132dba in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so
#18 0x40133747 in Tcl_EvalEx () from /usr/lib/libtcl8.4.so
#19 0x4018b75d in AfterProc () from /usr/lib/libtcl8.4.so
#20 0x4018ad91 in TimerHandlerEventProc () from /usr/lib/libtcl8.4.so
#21 0x4017bcaa in Tcl_ServiceEvent () from /usr/lib/libtcl8.4.so
#22 0x4017bfe2 in Tcl_DoOneEvent () from /usr/lib/libtcl8.4.so
#23 0x0804fae5 in ui_mainloop () at tkmain.c:1967
#24 0x0804adfd in main (argc=0, argv=0x0) at tkunix.c:126
#25 0x402c1bb4 in __libc_start_main () from /lib/libc.so.6

By the way, I removed the (set see-terrain-always false) line from my
actual game file and the save crash went away, just as in
crasher.g.  That's an okay work-around, I think, because the feature only
has minimal game importance.  The crash during play looks like it might
actually be a different bug, but it also seems to be linked to
see-terrain-always.
-- 
Matthew Skala
mskala@ansuz.sooke.bc.ca                    Embrace and defend.
http://ansuz.sooke.bc.ca/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]