<URL: http://bugs.freeciv.org/Ticket/Display.html?id=16824 >

> [dmarks - Di 14. Aug 2007, 02:10:54]:
> 
> > [EMAIL PROTECTED] - Wed May 03 19:35:01 2006]:
> > 
> >  OS - Windows 2000
> > Client version -2.1.0 beta  not gtk or sdl.
> > Attached is the savegame, drwatson log,
> >  
> > Can reproduce by loading savegame, logging on as "mark" on local host, 
> > starting game., selecting Reports - Players, selecting the Polish AI, 
> > and then clicking intellegence button.
> > 
> > 
> > Screenshot of error message (attached) shows that the symptom occurs in 
> > tech.c
> > 
> > Keep up the good work!  I love this game.
> > 
> > 
> 
> Crash still reproducible in 2.1.0-beta4.
> 
> BTW, I'm trying to debug the crash with WinDbg. I've gotten as far as
> 'catching' the crash, but am unsure how to extract any useful data
from it.
> 
> Could someone who is familiar with Windows debugging please help out?
> 
>  ~Daniel
> 
> 

To get a backtrace I suggest using gdb as described in this forum
thread: http://forum.freeciv.org/viewtopic.php?t=1887

For further debugging I'm using Eclipse with the CDT plugin, which has a
very nice gdb interface.

Backtrace and fix for this crash are attached. The client (gui part)
asked about details of unknown tech.

------------------------

(gdb) bt full
#0  0x77c05b62 in _end__ ()
No symbol table info available.
#1  0x0058c1a0 in game ()
No symbol table info available.
#2  0x0048ec0b in get_invention (pplayer=0x58c1a0, tech=197) at tech.c:63
        pplayer = (const struct player *) 0x77be2d25
        tech = 3
#3  0x0048f222 in base_total_bulbs_required (pplayer=0x58c1a0, tech=197)
    at tech.c:424
        tech_cost_style = 3
        base_cost = 3.326556038488202e-307
#4  0x0048f371 in total_bulbs_required (pplayer=0x58c1a0) at tech.c:387
        pplayer = (const struct player *) 0x58c1a0
#5  0x004bfca7 in popup_intel_dialog (p=0x58c1a0) at inteldlg.c:127
        lb = 0x7e36882a
        buf = "Luxury: 0%\0\0Communism\0arz Kazimierz
Wielki\0ire\0\0¦\f^\001\0\
0\0\0\214÷\"\0;m@"
        pcity = (struct city *) 0x4
        hbox = (struct fcwin_box *) 0x11c2fb0
        vbox = (struct fcwin_box *) 0x11c2bf0
        i = 0
        lb = 0x7e36882a
        buf = "Luxury: 0%\0\0Communism\0arz Kazimierz
Wielki\0ire\0\0¦\f^\001\0\
0\0\0\214÷\"\0;m@"
        hbox = (struct fcwin_box *) 0x11c2fb0
        vbox = (struct fcwin_box *) 0x11c2bf0
#6  0x004c2791 in players_proc (dlg=0x410cc4, message=273, wParam=102,
    lParam=1444894) at plrdlg.c:101
        sel = 3
        i = 5816736
        n = 3
        player_index = 5816736
        lvi = {mask = 4, iItem = 3, iSubItem = 1444894, state = 273,
  stateMask = 2291452, pszText = 0x7e369488 "\203M³ Þo±  -\b",
  cchTextMax = 15625616, iImage = -21, lParam = 2}
        message = 273
#7  0x004c89c1 in layout_wnd_proc (hWnd=0x410cc4, message=273, wParam=102,
    lParam=1444894) at gui_stuff.c:231
        ret = 1444894
        win_data = (struct fcwin_win_data *) 0x11c1450
        message = 273
        lParam = 1444894
#8  0x7e368734 in _end__ ()
No symbol table info available.
#9  0x7e368816 in _end__ ()
No symbol table info available.
#10 0x7e36b89b in _end__ ()
No symbol table info available.
#11 0x7e36b903 in _end__ ()
No symbol table info available.
#12 0x7e39fd1d in _end__ ()
No symbol table info available.
#13 0x7e396561 in _end__ ()
No symbol table info available.
#14 0x7e376df4 in _end__ ()
No symbol table info available.
#15 0x7e38b04a in _end__ ()
No symbol table info available.
#16 0x7e368734 in _end__ ()
No symbol table info available.
#17 0x7e368816 in _end__ ()
No symbol table info available.
#18 0x7e3689cd in _end__ ()
No symbol table info available.
#19 0x7e3696c7 in _end__ ()
No symbol table info available.
#20 0x004a8dbc in ui_main (argc=1, argv=0x22fd90) at gui_main.c:789
        rc = {left = 154, top = 203, right = 526, bottom = 591}
        msg = {hwnd = 0x160c1e, message = 514, wParam = 0, lParam = 786489,
  time = 673222552, pt = {x = 141, y = 271}}
        quit = false
        idle = 80
        callback_timer = (struct timer *) 0x1162db0
        anim_timer = (struct timer *) 0x1162de0
        callback_seconds = 0.5
#21 0x00406341 in SDL_main (argc=1, argv=0x22fd90) at civclient.c:357
        i = 1
        loglevel = 2
        ui_options = 0
        ui_separator = false
        option = 0x11c1450 "0#L"
        user_tileset = false
        argc = 273
        argv = (char **) 0x160c1e
#22 0x004ccff6 in console_main (argc=1, argv=0x22fd90)
    at src/main/win32/SDL_win32_main.c:217
        argv = (char **) 0x111
        n = 2360840
        bufp = 0x240608 ""
        appname = 0x11c1450 "0#L"
        status = 4
#23 0x004cd1b7 in WinMain (hInst=0x400000, hPrev=0x0, szCmdLine=0x241f0e "",
    sw=10) at src/main/win32/SDL_win32_main.c:353
        handle = 0x4
        argv = (char **) 0x22fd90
        argc = 1444894
        cmdline = 0x22fda0 "C:\\Programme\\Freeciv-S2_1-win32/civclient.exe"
        pathlen = 4
        path =
"C:\\Programme\\Freeciv-S2_1-win32\0civclient.exe\0\0\0\0\0\0\0\2
20\r\022\001Þ¦\"\0xÍL\00¦\"", '\0' <repeats 13 times>, "d²\"\0
\0\0\0°¦\"\0\0\0\
0\0aaaaaaaAaaaAaaAaaaaaAAaAAaaAaaaa.Ñ+wá\032+wá¦\"\08++w\004\0\0\0-++w\220-L\0­Ù
\"\0\0\0\0\0ÓÊ-w\0\0\022\001o\0\022\001E\t\222|N\t\222|Ó-ßb\0\0\002\0Ó\036$\0\22
4\\+w.Ñ+"...
        bufp = 0x22fd90 "á²\""
        nLen = 2360840
        newfp = (FILE *) 0x7c92056d
        path =
"C:\\Programme\\Freeciv-S2_1-win32\0civclient.exe\0\0\0\0\0\0\0\2
20\r\022\001Þ¦\"\0xÍL\00¦\"", '\0' <repeats 13 times>, "d²\"\0
\0\0\0°¦\"\0\0\0\
0\0aaaaaaaAaaaAaaAaaaaaAAaAAaaAaaaa.Ñ+wá\032+wá¦\"\08++w\004\0\0\0-++w\220-L\0­Ù
\"\0\0\0\0\0ÓÊ-w\0\0\022\001o\0\022\001E\t\222|N\t\222|Ó-ßb\0\0\002\0Ó\036$\0\22
4\\+w.Ñ+"...
#24 0x004cca3a in main ()
No symbol table info available.
(gdb)

Index: client/gui-win32/inteldlg.c
===================================================================
--- client/gui-win32/inteldlg.c	(revision 13322)
+++ client/gui-win32/inteldlg.c	(working copy)
@@ -124,10 +124,14 @@
   
   hbox=fcwin_hbox_new(intel_dialog,FALSE);
    
-  my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"),
-	      advance_name_researching(p),
-	      get_player_research(p)->bulbs_researched,
-	      total_bulbs_required(p));
+  if (get_player_research(p)->researching != A_UNKNOWN) {
+    my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"),
+	        advance_name_researching(p),
+	        get_player_research(p)->bulbs_researched,
+	        total_bulbs_required(p));
+  } else {
+    my_snprintf(buf, sizeof(buf), _("Researching: (Unknown)"));
+  }
   fcwin_box_add_static(hbox,buf,0,SS_CENTER,TRUE,TRUE,10);
   
   pcity = find_palace(p);
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to