URL:
<http://gna.org/bugs/?21900>
Summary: Segmentation fault in utype_has_flag in Freeciv-web
Project: Freeciv
Submitted by: andreasr
Submitted on: Wed 09 Apr 2014 04:31:13 PM UTC
Category: freeciv-web
Severity: 3 - Normal
Priority: 5 - Normal
Status: None
Assigned to: None
Originator Email:
Open/Closed: Open
Release:
Discussion Lock: Any
Operating System: GNU/Linux
Planned Release:
_______________________________________________________
Details:
Hi!
I get some segmentation faults in utype_has_flag in unittype.c, for some
Freeciv-web games. This is from Freeciv revision 24737 running on the
production server http//play.freeciv.org/
Any help fixing this? I'm not sure if this is a Freeciv-web specific bug, or a
general problem in the Freeciv C server. I vaguely remember some segmentation
fault fixes in action_prob recently, perhaps this is related.
Backtrace generated from coredump:
Program terminated with signal 11, Segmentation fault.
#0 0x081ac007 in utype_has_flag (punittype=0x0, flag=23) at unittype.c:190
flag = 23
punittype = 0x0
#1 0x0812b228 in ap_diplomat_battle (pdefender=0x95ba150, pattacker=0x0)
at actions.c:481
chance = <optimized out>
#2 action_prob (wanted_action=wanted_action@entry=ACTION_SPY_SABOTAGE_UNIT,
actor_player=0x0, actor_tile=actor_tile@entry=0x0,
actor_unit=actor_unit@entry=0x0,
target_player=target_player@entry=0x9d49048,
target_city=target_city@entry=0x9a41208,
target_tile=target_tile@entry=0xb692e2d0,
target_unit=target_unit@entry=0x95ba150, target_specialist=0x0,
target_output=0x0, target_building=0x0, actor_specialist=0x0,
actor_output=0x0, actor_building=0x0, actor_city=0x0) at actions.c:580
known = 2
chance = 254
#3 0x0812bbf4 in action_prob_vs_unit (actor_unit=actor_unit@entry=0x0,
action_id=action_id@entry=1, target_unit=target_unit@entry=0x95ba150)
at actions.c:688
No locals.
#4 0x080e01ec in handle_unit_get_actions (
pc=pc@entry=0x82977a0 <connections>, actor_unit_id=4888,
target_tile_id=2298) at unithand.c:242
act = 1
actor_player = <optimized out>
actor_unit = 0x0
target_tile = <optimized out>
probabilities = {255, 0, 0, 0, 0, 0, 0, 0, 0, 0}
target_unit = 0x95ba150
target_city = 0x9a41208
#5 0x0809d879 in server_handle_packet (
type=type@entry=PACKET_UNIT_GET_ACTIONS, packet=packet@entry=0x8b134e0,
pplayer=pplayer@entry=0x9a56248, pconn=pconn@entry=0x82977a0
<connections>)
at hand_gen.c:250
No locals.
#6 0x08051608 in server_packet_input (
pconn=pconn@entry=0x82977a0 <connections>, packet=0x8b134e0, type=87)
at srv_main.c:1702
pplayer = 0x9a56248
__FUNCTION__ = "server_packet_input"
#7 0x080d58c7 in incoming_client_packets (pconn=<optimized out>)
at sernet.c:450
command_ok = <optimized out>
packet = {data = 0x8b134e0, type = PACKET_UNIT_GET_ACTIONS}
#8 server_sniff_all_input () at sernet.c:842
pconn = 0x82977a0 <connections>
nb = <optimized out>
i = <optimized out>
s = <optimized out>
max_desc = <optimized out>
readfs = {fds_bits = {128, 0 <repeats 31 times>}}
writefs = {fds_bits = {0 <repeats 32 times>}}
exceptfs = {fds_bits = {0 <repeats 32 times>}}
tv = {tv_sec = 0, tv_usec = 999997}
__FUNCTION__ = "server_sniff_all_input"
#9 0x08052e2d in srv_running () at srv_main.c:2401
save_counter = 1
i = <optimized out>
is_new_turn = true
skip_mapimg = false
eot_timer = <optimized out>
need_send_pending_events = false
#10 srv_main () at srv_main.c:2879
__FUNCTION__ = "srv_main"
#11 0x0804cb02 in main (argc=17, argv=0xbf922c14) at civserver.c:458
inx = 17
showhelp = <optimized out>
showvers = <optimized out>
s = <optimized out>
max_desc = <optimized out>
readfs = {fds_bits = {128, 0 <repeats 31 times>}}
writefs = {fds_bits = {0 <repeats 32 times>}}
exceptfs = {fds_bits = {0 <repeats 32 times>}}
tv = {tv_sec = 0, tv_usec = 999997}
__FUNCTION__ = "server_sniff_all_input"
#9 0x08052e2d in srv_running () at srv_main.c:2401
save_counter = 1
i = <optimized out>
is_new_turn = true
skip_mapimg = false
eot_timer = <optimized out>
need_send_pending_events = false
#10 srv_main () at srv_main.c:2879
__FUNCTION__ = "srv_main"
#11 0x0804cb02 in main (argc=17, argv=0xbf922c14) at civserver.c:458
inx = 17
showhelp = <optimized out>
showvers = <optimized out>
---Type <return> to continue, or q <return> to quit---
option = <optimized out>
__FUNCTION__ = "main"
This is what the function in unittype.c looks like:
/**************************************************************************
Return whether the given unit type has the flag.
**************************************************************************/
bool utype_has_flag(const struct unit_type *punittype, int flag)
{
fc_assert_ret_val(unit_type_flag_id_is_valid(flag), FALSE);
return BV_ISSET(punittype->flags, flag);
}
_______________________________________________________
Reply to this item at:
<http://gna.org/bugs/?21900>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev