[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-15 Thread Jacob Nevins
Update of bug #22341 (project freeciv):

Severity: 5 - Blocker => 3 - Normal 
 Planned Release:2.5.0, 2.6.0 => 2.4.3, 2.5.0, 2.6.0

___

Follow-up Comment #4:

...and S2_4 r25583 does something similar. Yay.

It's OK with a base that actually exists though ('Fortress'), as it trunk.
Since scripts require privilege, I don't consider this a blocker.

> if t:has_base(v.utype:rule_name())
This looks peculiar -- you're trying to find a base with the name of a unit
type?

Clearly we shouldn't fall over, but were you expecting this to do something
useful?

___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-15 Thread Jacob Nevins
Follow-up Comment #3, bug #22341 (project freeciv):

> An equivalent test on S2_5
(r25583)

___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-15 Thread Jacob Nevins
Update of bug #22341 (project freeciv):

 Planned Release:   2.6.0 => 2.5.0, 2.6.0   

___

Follow-up Comment #2:

An equivalent test on S2_5 () produces no segfaults, but a pile of assertion
failures, so all is clearly not well.


jtn: '/lua cmd print(find.tile(60,45):has_base('Stoat'))'
1: in base_index() [base.c::247]: assertion '((void *)0) != pbase' failed.
2: Backtrace:
2: 0: server/freeciv-server() [0x62ec7b]
2: 1: server/freeciv-server(vdo_log+0x9b) [0x63270b]
2: 2: server/freeciv-server(do_log+0x7d) [0x6327dd]
2: 3: server/freeciv-server(fc_assert_fail+0x9f) [0x632a0f]
2: 4: server/freeciv-server(base_index+0x44) [0x54cdf4]
2: 5: server/freeciv-server(tile_has_base+0x14) [0x623a84]
2: 6: server/freeciv-server() [0x6574e3]
2: 7: server/freeciv-server() [0x479ff2]
2: 8: server/freeciv-server() [0x4844d4]
2: 9: server/freeciv-server() [0x47a2c9]
2:10: server/freeciv-server() [0x479808]
2:11: server/freeciv-server() [0x47a583]
2:12: server/freeciv-server(lua_pcallk+0xd7) [0x475e47]
2:13: server/freeciv-server(luascript_call+0xd5) [0x6513d5]
2:14: server/freeciv-server(script_server_do_string+0x36) [0x471c76]
2:15: server/freeciv-server() [0x441041]
2:16: server/freeciv-server() [0x4484b7]
2:17: server/freeciv-server(handle_chat_msg_req+0x45d) [0x503e5d]
2:18: server/freeciv-server(server_handle_packet+0x6f4) [0x4a6294]
2:19: server/freeciv-server(server_packet_input+0xbb) [0x43775b]
2:20: server/freeciv-server(server_sniff_all_input+0x8aa) [0x4e6cfa]
2:21: server/freeciv-server(srv_main+0x9bd) [0x439e1d]
2:22: server/freeciv-server(main+0x6c2) [0x432592]
2:23: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)
[0x7f8b6782676d]
2:24: server/freeciv-server() [0x432b25]
1: in tile_has_base() [tile.c::843]: assertion '(base_index(pbase)) >= 0 &&
(base_index(pbase)) < (signed int) sizeof((ptile->bases).vec) * 8' failed.
2: Backtrace:
2: 0: server/freeciv-server() [0x62ec7b]
2: 1: server/freeciv-server(vdo_log+0x9b) [0x63270b]
2: 2: server/freeciv-server(do_log+0x7d) [0x6327dd]
2: 3: server/freeciv-server(fc_assert_fail+0x9f) [0x632a0f]
2: 4: server/freeciv-server(tile_has_base+0x4a) [0x623aba]
2: 5: server/freeciv-server() [0x6574e3]
2: 6: server/freeciv-server() [0x479ff2]
2: 7: server/freeciv-server() [0x4844d4]
2: 8: server/freeciv-server() [0x47a2c9]
2: 9: server/freeciv-server() [0x479808]
2:10: server/freeciv-server() [0x47a583]
2:11: server/freeciv-server(lua_pcallk+0xd7) [0x475e47]
2:12: server/freeciv-server(luascript_call+0xd5) [0x6513d5]
2:13: server/freeciv-server(script_server_do_string+0x36) [0x471c76]
2:14: server/freeciv-server() [0x441041]
2:15: server/freeciv-server() [0x4484b7]
2:16: server/freeciv-server(handle_chat_msg_req+0x45d) [0x503e5d]
2:17: server/freeciv-server(server_handle_packet+0x6f4) [0x4a6294]
2:18: server/freeciv-server(server_packet_input+0xbb) [0x43775b]
2:19: server/freeciv-server(server_sniff_all_input+0x8aa) [0x4e6cfa]
2:20: server/freeciv-server(srv_main+0x9bd) [0x439e1d]
2:21: server/freeciv-server(main+0x6c2) [0x432592]
2:22: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)
[0x7f8b6782676d]
2:23: server/freeciv-server() [0x432b25]
1: in base_index() [base.c::247]: assertion '((void *)0) != pbase' failed.
2: Backtrace:
2: 0: server/freeciv-server() [0x62ec7b]
2: 1: server/freeciv-server(vdo_log+0x9b) [0x63270b]
2: 2: server/freeciv-server(do_log+0x7d) [0x6327dd]
2: 3: server/freeciv-server(fc_assert_fail+0x9f) [0x632a0f]
2: 4: server/freeciv-server(base_index+0x44) [0x54cdf4]
2: 5: server/freeciv-server(tile_has_base+0x52) [0x623ac2]
2: 6: server/freeciv-server() [0x6574e3]
2: 7: server/freeciv-server() [0x479ff2]
2: 8: server/freeciv-server() [0x4844d4]
2: 9: server/freeciv-server() [0x47a2c9]
2:10: server/freeciv-server() [0x479808]
2:11: server/freeciv-server() [0x47a583]
2:12: server/freeciv-server(lua_pcallk+0xd7) [0x475e47]
2:13: server/freeciv-server(luascript_call+0xd5) [0x6513d5]
2:14: server/freeciv-server(script_server_do_string+0x36) [0x471c76]
2:15: server/freeciv-server() [0x441041]
2:16: server/freeciv-server() [0x4484b7]
2:17: server/freeciv-server(handle_chat_msg_req+0x45d) [0x503e5d]
2:18: server/freeciv-server(server_handle_packet+0x6f4) [0x4a6294]
2:19: server/freeciv-server(server_packet_input+0xbb) [0x43775b]
2:20: server/freeciv-server(server_sniff_all_input+0x8aa) [0x4e6cfa]
2:21: server/freeciv-server(srv_main+0x9bd) [0x439e1d]
2:22: server/freeciv-server(main+0x6c2) [0x432592]
2:23: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)
[0x7f8b6782676d]
2:24: server/freeciv-server() [0x432b25]
1: in base_index() [base.c::247]: assertion '((void *)0) 

[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-15 Thread Jacob Nevins
Additional Item Attachment, bug #22341 (project freeciv):

File name: basetest.sav.bz2   Size:13 KB


___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-15 Thread Jacob Nevins
Update of bug #22341 (project freeciv):

  Status:None => Confirmed  
 Release:   SVN@25382 => trunk r25382   
 Planned Release: => 2.6.0  

___

Follow-up Comment #1:

Reproduced with trunk r25582 and a slightly simpler scenario:

Attached (unremarkable, classic ruleset) savegame. Then issue


/lua cmd print(find.tile(62,31):has_base('Stoat'))


Top of backtrace:


#0  base_extra_get (pbase=0x0) at base.c:272
No locals.
#1  0x0068001e in api_methods_tile_has_base (L=, 
ptile=0x17a1e60, name=) at api_game_methods.c:586
pbase = 
__FUNCTION__ = "api_methods_tile_has_base"
#2  0x006788f3 in tolua_game_Tile_has_base00 (tolua_S=0x1398830)
at tolua_game_gen.c:1202
tolua_ret = 
L = 0x1398830
self = 0x17a1e60
name = 
#3  tolua_game_Tile_has_base00 (tolua_S=0x1398830) at tolua_game_gen.c:1185
tolua_err = {index = 20547632, array = 0, type = 0x1a12400 "`\210g"}
#4  0x0047fc82 in luaD_precall (L=0x1398830, func=, 
nresults=-1) at ldo.c:319
f = 0x678860 
ci = 
n = 
funcr = 
__PRETTY_FUNCTION__ = "luaD_precall"
#5  0x0048a164 in luaV_execute (L=0x1398830) at lvm.c:709
b = 
nresults = -1
i = 
ra = 0x1a12400
ci = 0x1350340
cl = 0x1a121e0
k = 0x1a1cca0
base = 0x1a123f0
[snip]


___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-14 Thread Jeffrey C. Jacobs
Additional Item Attachment, bug #22341 (project freeciv):

File name: freeciv-T1429-Y03004-quitidle.sav.bz2 Size:722 KB


___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev


[Freeciv-Dev] [bug #22341] Lua script calling has_base crashes freeciv

2014-07-14 Thread Jeffrey C. Jacobs
URL:
  

 Summary: Lua script calling has_base crashes freeciv
 Project: Freeciv
Submitted by: timehorse
Submitted on: Mon 14 Jul 2014 09:41:57 PM UTC
Category: general
Severity: 5 - Blocker
Priority: 5 - Normal
  Status: None
 Assigned to: None
Originator Email: 
 Open/Closed: Open
 Release: SVN@25382
 Discussion Lock: Any
Operating System: GNU/Linux
 Planned Release: 

___

Details:

The following lua script causes Freeciv to crash and core dump:

Karchidons = 0
Pfree = 0
for v in find.player(0):units_iterate() do
if v.utype.id == 11 then
local m = getmetatable(v)
elseif v.utype.id == 9 then
t = v.tile
if t then
c = t:city()
if c then
if c.id == 8715 then
Karchidons = Karchidons + 1
else
log.debug(c.name .. " " .. c.id)
end
else
log.debug(v.utype:rule_name())
if t:has_base(v.utype:rule_name()) then -- This is the line
that causes the game to crash
log.debug("Partisan stationed at (" .. t.x .. ", " .. t.y
.. ")")
else
log.debug("Partisan at (" .. t.x .. ", " .. t.y .. ")")
end
Pfree = Pfree + 1
end
end
end
end
log.debug(Karchidons .. " Partisans in Karchidons.")
log.debug(Pfree .. " Partisan Free Agents.")




___

Reply to this item at:

  

___
  Message sent via/by Gna!
  http://gna.org/


___
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev