Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0002974 [DCSS] Bug Report crash have not tried 2010-12-13 16:19 2012-01-14 21:52
Reporter KiloByte View Status public  
Assigned To KiloByte
Priority normal Resolution done  
Status resolved   Product Branch 0.8 ancient branch
Summary 0002974: crash when a dancing weapon is drawn mid-initialization
Description Elliptic had a fun crash today:

#0 0x00000000007ced58 in get_mons_resists (mon=<value optimized out>) at mon-util.cc:350
#1 0x000000000076fc0a in monster_info (this=0x7fff8d4d2400, m=0xded358, milev=0) at mon-info.cc:320
0000002 0x00000000008777af in _update_monster (mons=0xded358) at show.cc:296
0000003 0x0000000000878ad5 in show_update_at (gp=@0x7fff8d4d2660, terrain_only=false) at show.cc:330
0000004 0x000000000087946f in show_init (terrain_only=false) at show.cc:337
0000005 0x000000000092ed61 in viewwindow (show_updates=true) at view.cc:924
0000006 0x000000000091b9db in runrest::stop (this=0xec5c54) at travel.cc:3987
0000007 0x0000000000540bc1 in stop_delay (stop_stair_travel=false) at delay.cc:280
0000008 0x00000000005427ae in interrupt_activity (ai=AI_MESSAGE, at=@0x7fff8d4d29c0, msgs_buf=0x0) at delay.cc:1652
0000009 0x000000000072a9d2 in prepare_message (imsg=@0x7fff8d4d2c00, channel=MSGCH_WARN, param=0) at message.cc:1171
0000010 0x000000000072b7eb in mpr (text=
        {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7fff8d4d2c00 "H??\001"}}, channel=MSGCH_WARN, param=0, nojoin=false)
    at message.cc:1028
0000011 0x00000000006835a7 in get_item_slot (reserve=10) at items.cc:173
0000012 0x00000000006e8058 in items (allow_uniques=0, force_class=OBJ_WEAPONS, force_type=25, dont_place=true, item_level=31,
    item_race=250, mapmask=0, force_ego=0, agent=-1) at makeitem.cc:3118
0000013 0x000000000076923e in _give_weapon (mon=0xded358, level=31, melee_only=false, give_aux_melee=true, spectral_orcs=false)
    at mon-gear.cc:1217
0000014 0x000000000076bd90 in give_item (mid=<value optimized out>, level_number=31, mons_summoned=false, spectral_orcs=false)
    at mon-gear.cc:2044
0000015 0x00000000007812ec in _place_monster_aux (mg=@0x7fff8d4d36d0, first_band_member=true, force_pos=<value optimized out>)
    at mon-place.cc:1792
0000016 0x0000000000781eea in place_monster (mg=
        {cls = 2370647760, base_type = 32767, behaviour = 2370647312, summoner = 0x0, abjuration_duration = 0, summon_type = 0, pos = {x = 0, y = 0}, preferred_grid_feature = DNGN_EXIT_HELL, foe = 0, flags = 2370647792, god = 32767, number = 0, colour = 0, power = 0, proximity = PROX_ANYWHERE, level_type = LEVEL_DUNGEON, map_mask = 0, hd = 7872234, hp = 0, extra_flags = 219043332678, mname = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2b <Address 0x2b out of bounds>}}, non_actor_summoner = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, props = {hash_map = 0x0}}, force_pos=false) at mon-place.cc:1216
0000017 0x00000000007832cd in mons_place (mg=
        {cls = 2370648032, base_type = 32767, behaviour = 2370647760, summoner = 0x0, abjuration_duration = 0, summon_type = 0, pos = {x = 0, y = 0}, preferred_grid_feature = DNGN_EXIT_HELL, foe = 0, flags = 2370648304, god = 32767, number = -1, colour = 0, power = 0, proximity = PROX_ANYWHERE, level_type = 13492672, map_mask = 0, hd = 7877325, hp = 0, extra_flags = 219043332678, mname = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2b <Address 0x2b out of bounds>}}, non_actor_summoner = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, props = {hash_map = 0x0}}) at mon-place.cc:3154
0000018 0x000000000094fc98 in zotdef_spawn (boss=false) at zotdef.cc:801
0000019 0x00000000006d5c33 in world_reacts () at main.cc:2868
0000020 0x00000000006dbd63 in _input () at main.cc:1141
#21 0x00000000006deb6d in _launch_game_loop () at main.cc:408
0000022 0x00000000006df9b3 in main (argc=10, argv=0x7fff8d4d3d78) at main.cc:285

When trying to give the dancing weapon its item, the item limit was hit, producing a message. It triggered a runrest_stop (a --more-- would be enough, too), causing a screen redraw. During that redraw, the dancing weapon wasn't yet ready.

I think the most reliable fix would be to not place monsters on the map until they are ready. This is not limited to dancing weapons, "&M orc ; pointy stick" will show the orc with an axe or a club coming into view.
Additional Information
Tags No tags attached.
Attached Files

- Relationships

-  Notes
(0016699)
KiloByte (manager)
2012-01-14 21:52

Appears to have been fixed in the meantime.

- Issue History
Date Modified Username Field Change
2010-12-13 16:19 KiloByte New Issue
2012-01-14 21:52 KiloByte Note Added: 0016699
2012-01-14 21:52 KiloByte Status new => resolved
2012-01-14 21:52 KiloByte Fixed in Branch => 0.10 development branch
2012-01-14 21:52 KiloByte Resolution open => done
2012-01-14 21:52 KiloByte Assigned To => KiloByte


Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker