URL:
  <http://gna.org/bugs/?20682>

                 Summary: unit_virtual_destroy() assertion
'!unit_transported(punit)' failed (launching missile from sub to adjacent
tile)
                 Project: Freeciv
            Submitted by: jtn
            Submitted on: Fri Mar 29 14:56:43 2013
                Category: client
                Severity: 3 - Normal
                Priority: 5 - Normal
                  Status: None
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
                 Release: S2_4 r22619
         Discussion Lock: Any
        Operating System: GNU/Linux
         Planned Release: 2.4.0

    _______________________________________________________

Details:

Found a reproducible assertion failure on S2_4: with a submarine carrying a
missile adjacent to to enemy units on the coast, move the missile to the units
(i.e. attack). Both attacker and defender clients hit this assertion failure.

I assume the problem is that the previously invisible missile unit becomes
visible only to be destroyed, and that the transported status at the client
ends up not what we want.

I suspect this isn't related to bug #20542.

Haven't checked if something similar happens with Marines.

Backtrace from one of the clients (with -F):


#0  0x00007f9aa8ac87bb in raise (sig=<value optimised out>)
    at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
No locals.
#1  0x00000000005cd9cc in fc_assert_fail (file=0x65a209 "unit.c", 
    function=0x65acc0 "unit_virtual_destroy", line=1718, 
    assertion=<value optimised out>, message=0x65bec0 "nologmsg:%s")
    at log.c:520
        level = LOG_FATAL
#2  0x00000000005c74fd in unit_virtual_destroy (punit=0x7bb53a0) at
unit.c:1718
        __FUNCTION__ = "unit_virtual_destroy"
#3  0x000000000045e240 in client_remove_unit (punit=0x7bb53a0) at
climisc.c:96
        pcity = <value optimised out>
        ptile = 0x3c3d0a0
        hc = 0
        old_unit = {utype = 0x9dc270, tile = 0x3c3d0a0, 
          facing = DIR8_SOUTHEAST, owner = 0x3aded80, id = 127, homecity = 0,

          upkeep = {0, 0, 0, 0, 0, 0}, moves_left = 36, hp = 10, veteran = 1,

          fuel = 1, goto_tile = 0x0, activity = ACTIVITY_IDLE, 
          activity_count = 0, activity_target = S_LAST, activity_base = -1, 
          changed_from = ACTIVITY_IDLE, changed_from_count = 0, 
          changed_from_target = S_ROAD, changed_from_base = 0, 
          ai_controlled = false, moved = false, paradropped = false, 
          done_moving = false, transporter = 0x7bb98f0, 
          transporting = 0x3c25eb0, battlegroup = -1, has_orders = false, 
          orders = {length = 0, index = 0, repeat = false, vigilant = false, 
            list = 0x0}, {client = {focus_status = FOCUS_AVAIL, 
              transported_by = 126, occupied = false, colored = false, 
              color_index = 0, asking_city_name = false}, server = {
              debug = false, adv = 0x0, ais = {0x0, 0x0, 0x0}, birth_turn = 0,

              ord_map = 0, ord_city = 0, vision = 0x0, action_timestamp = 0, 
              action_turn = 0}}}
        old = 1
        __FUNCTION__ = "client_remove_unit"
#4  0x0000000000487de0 in client_handle_packet (type=<value optimised out>, 
    packet=0x0) at packhand_gen.c:150
No locals.
#5  0x00000000004592fe in client_packet_input (packet=<value optimised out>, 
    type=64) at client_main.c:654
        __FUNCTION__ = "client_packet_input"
#6  0x000000000045f7a5 in input_from_server (fd=<value optimised out>)
    at clinet.c:421
        result = true
        packet = 0x0
        type = PACKET_UNIT_SHORT_INFO
        nb = <value optimised out>
        __FUNCTION__ = "input_from_server"
#7  0x000000000044e7e0 in get_net_input (source=<value optimised out>, 
    condition=<value optimised out>, data=<value optimised out>)
    at gui_main.c:1882
No locals.
#8  0x00007f9aa28a19d2 in g_main_context_dispatch () from
/lib/libglib-2.0.so.0
No symbol table info available.
#9  0x00007f9aa28a5858 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#10 0x00007f9aa28a5d65 in g_main_loop_run () from /lib/libglib-2.0.so.0
No symbol table info available.
#11 0x00007f9aa4e48bc7 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#12 0x0000000000451ce9 in ui_main (argc=1, argv=0x7fffca56a428)
    at gui_main.c:1673
        home = <value optimised out>
        sig = <value optimised out>
        __FUNCTION__ = "ui_main"
#13 0x00000000004597e3 in client_main (argc=<value optimised out>, 
    argv=0x7fffca56a428) at client_main.c:590
        i = 9
        loglevel = LOG_VERBOSE
        ui_options = <value optimised out>
        ui_separator = 128
        option = <value optimised out>
        user_tileset = false
        fatal_assertions = 6
        __FUNCTION__ = "client_main"
#14 0x00007f9aa696fc4d in __libc_start_main (main=<value optimised out>, 
    argc=<value optimised out>, ubp_av=<value optimised out>, 
    init=<value optimised out>, fini=<value optimised out>, 
    rtld_fini=<value optimised out>, stack_end=0x7fffca56a418)
    at libc-start.c:226
        result = <value optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 5730541663988160977, 
                4513376, 140736588063776, 0, 0, -5730428219023746607, 
                -5714025152484271663}, mask_was_saved = 0}}, priv = {pad = {
              0x0, 0x0, 0x60d4c0, 0x7fffca56a428}, data = {prev = 0x0, 
              cleanup = 0x0, canceltype = 6345920}}}
        not_first_call = <value optimised out>
#15 0x000000000044de89 in _start ()
No symbol table info available.


Last bit of -d3 log from the same client:


...
3: in get_packet_from_connection() [packets.c::471]: got packet
type=(PACKET_UNIT_SHORT_INFO)64 len=18 from server
3: in receive_packet_unit_short_info_100() [packets_gen.c::16356]:
packet_unit_short_info_100: got info about (127)
3: in receive_packet_unit_short_info_100() [packets_gen.c::16368]:   no old
info
3: in receive_packet_unit_short_info_100() [packets_gen.c::16375]:   got field
'owner'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16384]:   got field
'tile'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16393]:   got field
'facing'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16402]:   got field
'type'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16423]:   got field
'hp'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16441]:   got field
'activity_base'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16450]:   got field
'transported_by'
3: in get_packet_from_connection() [packets.c::471]: got packet
type=(PACKET_UNIT_INFO)63 len=11 from server
3: in receive_packet_unit_info_100() [packets_gen.c::14577]:
packet_unit_info_100: got info about (109)
3: in receive_packet_unit_info_100() [packets_gen.c::14614]:   got field
'facing'
3: in get_packet_from_connection() [packets.c::471]: got packet
type=(PACKET_UNIT_COMBAT_INFO)65 len=9 from server
3: in receive_packet_unit_combat_info_100() [packets_gen.c::16777]:
packet_unit_combat_info_100: got info about ()
3: in receive_packet_unit_combat_info_100() [packets_gen.c::16787]:   no old
info
3: in receive_packet_unit_combat_info_100() [packets_gen.c::16792]:   got
field 'attacker_unit_id'
3: in receive_packet_unit_combat_info_100() [packets_gen.c::16801]:   got
field 'defender_unit_id'
3: in receive_packet_unit_combat_info_100() [packets_gen.c::16810]:   got
field 'attacker_hp'
3: in my_play() [audio_sdl.c::122]: Playing file
"/home/jtn/.freeciv/2.4/freesounds/06_high_technology/f_cruise_missile-47251.ogg"
on channel 0
3: in audio_play_tag() [audio.c::281]: No sound file for tag f_explorer (file
(null))
3: in my_play() [audio_sdl.c::122]: Playing file
"/home/jtn/.freeciv/2.4/freesounds/f_generic-29618.ogg" on channel 1
3: in get_packet_from_connection() [packets.c::471]: got packet
type=(PACKET_UNIT_SHORT_INFO)64 len=18 from server
3: in receive_packet_unit_short_info_100() [packets_gen.c::16356]:
packet_unit_short_info_100: got info about (127)
3: in receive_packet_unit_short_info_100() [packets_gen.c::16375]:   got field
'owner'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16384]:   got field
'tile'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16393]:   got field
'facing'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16402]:   got field
'type'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16423]:   got field
'hp'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16441]:   got field
'activity_base'
3: in receive_packet_unit_short_info_100() [packets_gen.c::16450]:   got field
'transported_by'
0: in unit_virtual_destroy() [unit.c::1718]: assertion
'!unit_transported(punit)' failed.




    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Fri Mar 29 14:56:43 2013  Name: SubMissileAttack.sav.bz2  Size: 13kB  
By: jtn

<http://gna.org/bugs/download.php?file_id=17591>

    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?20682>

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


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

Reply via email to