URL:
<http://gna.org/bugs/?21349>
Summary: Handicaps pointer rather than contents copied on
civil war => double free()
Project: Freeciv
Submitted by: jtn
Submitted on: Sat Dec 14 16:03:50 2013
Category: ai
Severity: 3 - Normal
Priority: 5 - Normal
Status: In Progress
Assigned to: jtn
Originator Email:
Open/Closed: Open
Release: trunk r23854
Discussion Lock: Any
Operating System: Any
Planned Release: 2.6.0
_______________________________________________________
Details:
In split_player(), we have
cplayer->ai_common.handicaps = pplayer->ai_common.handicaps;
handicaps is a void* allocated by handicaps_init() and freed by
handicaps_close(), so should be copied deeply rather than shallowly. (Caused
by patch #4197, I think.)
This manifested as an invalid free() on server shutdown. Presumably also a
tiny memory leak.
*** glibc detected *** ./server/freeciv-server: free(): invalid pointer:
0x0000000003f8e880 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f6971bbfb96]
./server/freeciv-server(handicaps_close+0x10)[0x45ce30]
./server/freeciv-server(server_remove_player+0x195)[0x49eee5]
./server/freeciv-server(server_game_free+0xbc)[0x43b95c]
./server/freeciv-server(server_quit+0x18)[0x43bb18]
./server/freeciv-server[0x44b0eb]
./server/freeciv-server(handle_chat_msg_req+0x45d)[0x4f12bd]
./server/freeciv-server(server_handle_packet+0x6d2)[0x4966d2]
./server/freeciv-server(server_packet_input+0xbb)[0x43946b]
./server/freeciv-server(server_sniff_all_input+0x8b2)[0x4d7632]
./server/freeciv-server(srv_main+0xaa5)[0x43c625]
./server/freeciv-server(main+0x78a)[0x43405a]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7f6971b6276d]
./server/freeciv-server[0x4346b1]
_______________________________________________________
Reply to this item at:
<http://gna.org/bugs/?21349>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev