CVS problems

Having trouble with the game? Report issues and get help here. Read this first!

Moderator: Forum Moderators

Forum rules
Before reporting issues in this section, you must read the following topic:
Post Reply
Loriel
Posts: 66
Joined: March 27th, 2004, 12:41 pm
Location: London UK

CVS problems

Post by Loriel »

Using the CVS of approx 8am today, I've been encountering problems.

Initially there was a "hanging" problem apparently similar to my earlier ones - ie hanging on the defender's first response to an attack.

Having checked that the problem was not present in the recent 0.7.3 release, I tried the CVS version again, and obtained different results - segfault after a few attacks/counterattacks, on the first combat in the game.

gdb backtrace :

Code: Select all

(gdb) bt
#0  font::undraw_floating_labels(SDL_Surface*) (screen=0x8260a98)
    at atomicity.h:40
#1  0x081fbfc4 in CVideo::flip() (this=0xffffffff) at video.cpp:305
#2  0x080b5b45 in display::unit_attack_ranged(gamemap::location const&, gamemap::location const&, int, attack_type const&) (this=0xbfffcdc0, a=@0xbfffbb30,
    b=@0xbfffc494, damage=2, attack=@0x8887ac0) at display.cpp:2011
#3  0x080b6d5c in display::unit_attack(gamemap::location const&, gamemap::location const&, int, attack_type const&) (this=0xbfffcdc0, a=@0xbfffbb30,
    b=@0xbfffc494, damage=2, attack=@0x8887ac0) at display.cpp:2088
#4  0x0805cb67 in attack(display&, gamemap const&, std::vector<team, std::allocator<team> >&, gamemap::location const&, gamemap::location const&, int, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, std::map> > >&, gamestatus const&, game_data const&, bool) (gui=@0xbfffcdc0, map=@0xbfffd760, teams=@0xbfffd710,
    attacker=@0xbfffc494, defender=@0xbfffbb30, attack_with=2,
    units=@0xbfffd750, state=@0xbfffd800, info=@0xbfffdf60) at stl_vector.h:515
#5  0x0816fbfa in turn_info::left_click(SDL_MouseButtonEvent const&) (
    this=0xbfffc410, event=@0xbfffd710) at playturn.cpp:701
#6  0x0816c733 in turn_info::mouse_press(SDL_MouseButtonEvent const&) (
    this=0xbfffc410, event=@0xbfffc0e0) at playturn.cpp:423
#7  0x0816b73a in turn_info::handle_event(SDL_Event const&) (this=0xbfffc410,
    event=@0xbfffc0e0) at playturn.cpp:287
#8  0x080bdddc in events::pump() () at stl_vector.h:515
This suggests the problem lies in the undrawing of floating labels, and turning off that option seems to avoid the problem.
However, the problem does not appear to be caused by the first undrawing - it appears to occur after two or three have been successfully undrawn.
Dave
Founding Developer
Posts: 7071
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Post by Dave »

Thanks for the bug report.

I have reproduced this problem, resolved it, and committed the fix to CVS.

It'd be greatly appreciated if you could test it and tell me if it's fixed.

David
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming
Loriel
Posts: 66
Joined: March 27th, 2004, 12:41 pm
Location: London UK

Post by Loriel »

Dave wrote:Thanks for the bug report.

I have reproduced this problem, resolved it, and committed the fix to CVS.

It'd be greatly appreciated if you could test it and tell me if it's fixed.

David
Thanks.

Will do - expect a report in about an hour.
Loriel
Posts: 66
Joined: March 27th, 2004, 12:41 pm
Location: London UK

Post by Loriel »

Unfortunately the current CVS (as of approx 10.00pm GMT) does not make, finishing as follows :

Code: Select all

g++ -I/usr/local/include/SDL -D_REENTRANT -DWESNOTH_PATH=\"/usr/local/share/wesnoth\" -g -O2 -DDEBUG -ggdb3 -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread -lSDL_image -lSDL_mixer -lSDL_net -lSDL_ttf  -o wesnoth  about.o actions.o ai.o ai_attack.o ai_move.o builder.o cavegen.o config.o cursor.o dialogs.o display.o events.o filesystem.o font.o game.o game_config.o game_events.o gamestatus.o hotkeys.o image.o intro.o key.o language.o log.o map.o map_label.o mapgen.o mapgen_dialog.o mouse.o multiplayer.o multiplayer_client.o multiplayer_connect.o multiplayer_lobby.o network.o pathfind.o playlevel.o playturn.o preferences.o race.o replay.o reports.o sdl_utils.o show_dialog.o sound.o statistics.o team.o terrain.o theme.o tooltips.o unit.o unit_types.o video.o button.o combo.o menu.o scrollbar.o slider.o textbox.o widget.o
actions.o(.text+0x7ae3): In function `attack(display&, gamemap const&, std::vector<team, std::allocator<team> >&, gamemap::location const&, gamemap::location const&, int, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, std::map> > >&, gamestatus const&, game_data const&, bool)':
/usr/local/include/c++/3.3.3/bits/stl_vector.h:515: undefined reference to `unit_display::unit_attack(display&, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, unit> > >&, gamemap const&, gamemap::location const&, gamemap::location const&, int, attack_type const&)'
actions.o(.text+0x8229):/usr/local/include/c++/3.3.3/bits/stl_vector.h:515: undefined reference to `unit_display::unit_attack(display&, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, unit> > >&, gamemap const&, gamemap::location const&, gamemap::location const&, int, attack_type const&)'
actions.o(.text+0xffb1): In function `move_unit(display*, game_data const&, gamestatus const&, gamemap const&, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, unit> > >&, std::vector<team, std::allocator<std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, unit> > > > >&, std::allocator<std::pair<gamemap::location const, unit> ><gamemap::location, std::allocator<gamemap::location> > const&, replay*, std::deque<undo_action, std::allocator<std::allocator<std::pair<gamemap::location const, unit> ><gamemap::location, std::allocator<gamemap::location> > > >*, gamemap::location*)':
/home/david/src/wesnoth/src/actions.cpp:1531: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
ai.o(.text+0x1c59): In function `ai_interface::move_unit(gamemap::location, gamemap::location, std::map<gamemap::location, paths, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, paths> > >&)':
/home/david/src/wesnoth/src/ai.cpp:223: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
game_events.o(.text+0x3125): In function `(anonymous namespace)::event_handler::handle_event_command((anonymous namespace)::queued_event const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&)':
/home/david/src/wesnoth/src/game_events.cpp:438: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
game_events.o(.text+0x7719): In function `(anonymous namespace)::event_handler::handle_event_command((anonymous namespace)::queued_event const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, config const&)':
/usr/local/include/c++/3.3.3/bits/stl_tree.h:202: undefined reference to `unit_display::unit_die(display&, gamemap::location const&, unit const&)'
playturn.o(.text+0xacaf): In function `turn_info::undo()':
/home/david/src/wesnoth/src/playturn.cpp:1154: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
playturn.o(.text+0xc277): In function `turn_info::redo()':
/home/david/src/wesnoth/src/playturn.cpp:1224: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
replay.o(.text+0x6130): In function `do_replay(display&, gamemap const&, game_data const&, std::map<gamemap::location, unit, std::less<gamemap::location>, std::allocator<std::pair<gamemap::location const, unit> > >&, std::vector<team, std::allocator<team> >&, int, gamestatus const&, game_state&, replay*)':
/usr/local/include/c++/3.3.3/bits/stl_tree.h:202: undefined reference to `unit_display::move_unit(display&, gamemap const&, std::vector<gamemap::location, std::allocator<gamemap::location> > const&, unit&)'
collect2: ld returned 1 exit status
make[3]: *** [wesnoth] Error 1
make[3]: Leaving directory `/home/user/src/wesnoth/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/user/src/wesnoth/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/user/src/wesnoth'
make: *** [all] Error 2
Looks like unit_display is not getting compiled.
Loriel
Posts: 66
Joined: March 27th, 2004, 12:41 pm
Location: London UK

Post by Loriel »

After making suitable additions to the Makefile, the CVS fix seems to solve the label undraw segfault problem.

Thanks.
Post Reply