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

                 Summary: Segfault on starting game (when adding text to
bottom of viewport of scrolling window?)
                 Project: Freeciv
            Submitted by: jtn
            Submitted on: Sat 30 Apr 2016 02:20:48 PM BST
                Category: client-sdl2
                Severity: 3 - Normal
                Priority: 5 - Normal
                  Status: None
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
                 Release: S2_6 r32524
         Discussion Lock: Any
        Operating System: GNU/Linux
         Planned Release: 2.6.0, 3.0.0

    _______________________________________________________

Details:

Tried the sdl2-client for the first time in a while. Got a segfault when
starting a spawned server.

From the segfault location and visually, I think it might happen when the text
in the chat window reaches the bottom and hence scrolling has to be enabled?
(Perhaps related to bug #24401?)


#0  create_surf_with_format (pf=0x0, width=0, height=0, flags=0) at
../../../client/gui-sdl2/graphics.c:364
        surf = <optimised out>
#1  0x00000000004f6c2f in crop_rect_from_surface (pSource=0x2f25b80,
pRect=pRect@entry=0x7ffd5d329840) at ../../../client/gui-sdl2/graphics.c:225
        pNew = <optimised out>
#2  0x0000000000463673 in create_icon_from_theme (pIcon_theme=<optimised out>,
state=<optimised out>) at ../../../client/gui-sdl2/widget_icon.c:306
        src = {x = 0, y = 0, w = 0, h = 0}
#3  0x0000000000460b54 in redraw_tibutton (pTIButton=0x31640f0) at
../../../client/gui-sdl2/widget_button.c:239
        iRet = <optimised out>
        pIcon = <optimised out>
        pCopy_Of_Icon_Theme = <optimised out>
        pTIButton = 0x31640f0
        iRet = <optimised out>
#4  0x000000000045fd4c in widget_redraw (pWidget=0x31640f0) at
../../../client/gui-sdl2/widget.h:274
No locals.
#5  redraw_group (pBeginGroupWidgetList=0x3164360,
pEndGroupWidgetList=<optimised out>, add_to_update=add_to_update@entry=1) at
../../../client/gui-sdl2/widget.c:740
        count = 64
        pTmpWidget = 0x31640f0
#6  0x00000000004d761c in add_to_chat_list (n_alloc=35, msg=<optimised out>)
at ../../../client/gui-sdl2/chatline.c:494
        pstr = 0x91364f0
        pBuf = 0x939d630
        pWindow = 0x52ca3e0
#7  real_output_window_append (astring=<optimised out>, tags=<optimised out>,
conn_id=<optimised out>) at ../../../client/gui-sdl2/chatline.c:399
        n = 35
        buffer = <optimised out>
#8  0x00000000004709c3 in output_window_event
(plain_text=plain_text@entry=0x7ffd5d329960 "jtn: 'set traitdistribution
\"EVEN\"'", tags=0x52c6ef0, conn_id=conn_id@entry=-1) at
../../client/chatline_common.c:170
No locals.
#9  0x0000000000473b6a in handle_event
(featured_text=featured_text@entry=0x939d010 "jtn: 'set traitdistribution
\"EVEN\"'", ptile=0x0, event=E_SETTING, turn=0, phase=<optimised out>,
conn_id=<optimised out>) at ../../client/climisc.c:1050
        plain_text = "jtn: 'set traitdistribution \"EVEN\"'\000l\"
(WRAPX|WRAPY|ISO|HEX).[/c]", '\000' <repeats 1391 times>...
        tags = 0x52c6ef0
        where = <optimised out>
        fallback_needed = false
        shown = false
        __FUNCTION__ = "handle_event"
#10 0x00000000004a6185 in handle_chat_msg (packet=packet@entry=0x939d010) at
../../client/packhand.c:1337
No locals.
#11 0x00000000004aebbd in client_handle_packet
(type=type@entry=PACKET_CHAT_MSG, packet=packet@entry=0x939d010) at
../../client/packhand_gen.c:98
No locals.
#12 0x000000000046e6c8 in client_packet_input (packet=packet@entry=0x939d010,
type=25) at ../../client/client_main.c:760
        __FUNCTION__ = "client_packet_input"
#13 0x0000000000475a43 in input_from_server (fd=<optimised out>) at
../../client/clinet.c:422
        type = PACKET_CHAT_MSG
        packet = 0x939d010
        nb = <optimised out>
        __FUNCTION__ = "input_from_server"
#14 0x000000000043d6fb in gui_event_loop (pData=pData@entry=0x0,
loop_action=loop_action@entry=0x0,
key_down_handler=key_down_handler@entry=0x43cf70 <main_key_down_handler>,
key_up_handler=key_up_handler@entry=0x43cc00 <main_key_up_handler>,
textinput_handler=textinput_handler@entry=0x0,
mouse_button_down_handler=mouse_button_down_handler@entry=0x43d190
<main_mouse_button_down_handler>,
mouse_button_up_handler=mouse_button_up_handler@entry=0x43cee0
<main_mouse_button_up_handler>,
mouse_motion_handler=mouse_motion_handler@entry=0x43cc20
<main_mouse_motion_handler>) at ../../../client/gui-sdl2/gui_main.c:621
        ID = 0
        tv = {tv_sec = 0, tv_usec = 9996}
        civfdset = {fds_bits = {2048, 0 <repeats 15 times>}}
        t_current = <optimised out>
        t_last_unit_anim = 3663
        t_last_map_scrolling = 3663
        real_timer_next_call = 4497
        result = 1
#15 0x000000000043de51 in ui_main (argc=argc@entry=1,
argv=argv@entry=0x7ffd5d32a578) at ../../../client/gui-sdl2/gui_main.c:996
        __Net_User_Event = {type = 32768, common = {type = 32768, timestamp =
3663}, window = {type = 32768, timestamp = 3663, windowID = 0, event = 1
'\001', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 =
0, data2 = 0}, key = {type = 32768, timestamp = 3663, windowID = 0, state = 1
'\001', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym =
{scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type
= 32768, timestamp = 3663, windowID = 0, text = "\001", '\000' <repeats 30
times>, start = 0, length = 0}, text = {type = 32768, timestamp = 3663,
windowID = 0, text = "\001", '\000' <repeats 30 times>}, motion = {type =
32768, timestamp = 3663, windowID = 0, which = 1, state = 0, x = 0, y = 0,
xrel = 0, yrel = 0}, button = {type = 32768, timestamp = 3663, windowID = 0,
which = 1, button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 =
0 '\000', x = 0, y = 0}, wheel = {type = 32768, timestamp = 3663, windowID =
0, which = 1, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 3663, which =
0, axis = 1 '\001', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0
'\000', value = 0, padding4 = 0}, jball = {type = 32768, timestamp = 3663,
which = 0, ball = 1 '\001', padding1 = 0 '\000', padding2 = 0 '\000', padding3
= 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, timestamp = 3663, which
= 0, hat = 1 '\001', value = 0 '\000', padding1 = 0 '\000', padding2 = 0
'\000'}, jbutton = {type = 32768, timestamp = 3663, which = 0, button = 1
'\001', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice =
{type = 32768, timestamp = 3663, which = 0}, caxis = {type = 32768, timestamp
= 3663, which = 0, axis = 1 '\001', padding1 = 0 '\000', padding2 = 0 '\000',
padding3 = 0 '\000', value = 0, padding4 = 0}, cbutton = {type = 32768,
timestamp = 3663, which = 0, button = 1 '\001', state = 0 '\000', padding1 = 0
'\000', padding2 = 0 '\000'}, cdevice = {type = 32768, timestamp = 3663, which
= 0}, quit = {type = 32768, timestamp = 3663}, user = {type = 32768, timestamp
= 3663, windowID = 0, code = 1, data1 = 0x0, data2 = 0x0}, syswm = {type =
32768, timestamp = 3663, msg = 0x100000000}, tfinger = {type = 32768,
timestamp = 3663, touchId = 4294967296, fingerId = 0, x = 0, y = 0, dx = 0, dy
= 0, pressure = 0}, mgesture = {type = 32768, timestamp = 3663, touchId =
4294967296, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0},
dgesture = {type = 32768, timestamp = 3663, touchId = 4294967296, gestureId =
0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {type = 32768, timestamp =
3663, file = 0x100000000 <error: Cannot access memory at address
0x100000000>}, padding = "\000\200\000\000O\016\000\000\000\000\000\000\001",
'\000' <repeats 42 times>}
        __Anim_User_Event = {type = 32768, common = {type = 32768, timestamp =
3663}, window = {type = 32768, timestamp = 3663, windowID = 0, event = 2
'\002', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 =
0, data2 = 0}, key = {type = 32768, timestamp = 3663, windowID = 0, state = 2
'\002', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym =
{scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type
= 32768, timestamp = 3663, windowID = 0, text = "\002", '\000' <repeats 30
times>, start = 0, length = 0}, text = {type = 32768, timestamp = 3663,
windowID = 0, text = "\002", '\000' <repeats 30 times>}, motion = {type =
32768, timestamp = 3663, windowID = 0, which = 2, state = 0, x = 0, y = 0,
xrel = 0, yrel = 0}, button = {type = 32768, timestamp = 3663, windowID = 0,
which = 2, button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 =
0 '\000', x = 0, y = 0}, wheel = {type = 32768, timestamp = 3663, windowID =
0, which = 2, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 3663, which =
0, axis = 2 '\002', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0
'\000', value = 0, padding4 = 0}, jball = {type = 32768, timestamp = 3663,
which = 0, ball = 2 '\002', padding1 = 0 '\000', padding2 = 0 '\000', padding3
= 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, timestamp = 3663, which
= 0, hat = 2 '\002', value = 0 '\000', padding1 = 0 '\000', padding2 = 0
'\000'}, jbutton = {type = 32768, timestamp = 3663, which = 0, button = 2
'\002', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice =
{type = 32768, timestamp = 3663, which = 0}, caxis = {type = 32768, timestamp
= 3663, which = 0, axis = 2 '\002', padding1 = 0 '\000', padding2 = 0 '\000',
padding3 = 0 '\000', value = 0, padding4 = 0}, cbutton = {type = 32768,
timestamp = 3663, which = 0, button = 2 '\002', state = 0 '\000', padding1 = 0
'\000', padding2 = 0 '\000'}, cdevice = {type = 32768, timestamp = 3663, which
= 0}, quit = {type = 32768, timestamp = 3663}, user = {type = 32768, timestamp
= 3663, windowID = 0, code = 2, data1 = 0x0, data2 = 0x0}, syswm = {type =
32768, timestamp = 3663, msg = 0x200000000}, tfinger = {type = 32768,
timestamp = 3663, touchId = 8589934592, fingerId = 0, x = 0, y = 0, dx = 0, dy
= 0, pressure = 0}, mgesture = {type = 32768, timestamp = 3663, touchId =
8589934592, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0},
dgesture = {type = 32768, timestamp = 3663, touchId = 8589934592, gestureId =
0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {type = 32768, timestamp =
3663, file = 0x200000000 <error: Cannot access memory at address
0x200000000>}, padding = "\000\200\000\000O\016\000\000\000\000\000\000\002",
'\000' <repeats 42 times>}
        __Info_User_Event = {type = 32768, common = {type = 32768, timestamp =
0}, window = {type = 32768, timestamp = 0, windowID = 0, event = 4 '\004',
padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0,
data2 = 0}, key = {type = 32768, timestamp = 0, windowID = 0, state = 4
'\004', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym =
{scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type
= 32768, timestamp = 0, windowID = 0, text = "\004", '\000' <repeats 30
times>, start = 0, length = 0}, text = {type = 32768, timestamp = 0, windowID
= 0, text = "\004", '\000' <repeats 30 times>}, motion = {type = 32768,
timestamp = 0, windowID = 0, which = 4, state = 0, x = 0, y = 0, xrel = 0,
yrel = 0}, button = {type = 32768, timestamp = 0, windowID = 0, which = 4,
button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x
= 0, y = 0}, wheel = {type = 32768, timestamp = 0, windowID = 0, which = 4, x
= 0, y = 0}, jaxis = {type = 32768, timestamp = 0, which = 0, axis = 4 '\004',
padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0,
padding4 = 0}, jball = {type = 32768, timestamp = 0, which = 0, ball = 4
'\004', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', xrel =
0, yrel = 0}, jhat = {type = 32768, timestamp = 0, which = 0, hat = 4 '\004',
value = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {type =
32768, timestamp = 0, which = 0, button = 4 '\004', state = 0 '\000', padding1
= 0 '\000', padding2 = 0 '\000'}, jdevice = {type = 32768, timestamp = 0,
which = 0}, caxis = {type = 32768, timestamp = 0, which = 0, axis = 4 '\004',
padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0,
padding4 = 0}, cbutton = {type = 32768, timestamp = 0, which = 0, button = 4
'\004', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice =
{type = 32768, timestamp = 0, which = 0}, quit = {type = 32768, timestamp =
0}, user = {type = 32768, timestamp = 0, windowID = 0, code = 4, data1 = 0x0,
data2 = 0x0}, syswm = {type = 32768, timestamp = 0, msg = 0x400000000},
tfinger = {type = 32768, timestamp = 0, touchId = 17179869184, fingerId = 0, x
= 0, y = 0, dx = 0, dy = 0, pressure = 0}, mgesture = {type = 32768, timestamp
= 0, touchId = 17179869184, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers =
0, padding = 0}, dgesture = {type = 32768, timestamp = 0, touchId =
17179869184, gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop =
{type = 32768, timestamp = 0, file = 0x400000000 <error: Cannot access memory
at address 0x400000000>}, padding =
"\000\200\000\000\000\000\000\000\000\000\000\000\004", '\000' <repeats 42
times>}
        __Flush_User_Event = {type = 32768, common = {type = 32768, timestamp
= 3682}, window = {type = 32768, timestamp = 3682, windowID = 0, event = 5
'\005', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 =
0, data2 = 0}, key = {type = 32768, timestamp = 3682, windowID = 0, state = 5
'\005', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym =
{scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type
= 32768, timestamp = 3682, windowID = 0, text = "\005", '\000' <repeats 30
times>, start = 0, length = 0}, text = {type = 32768, timestamp = 3682,
windowID = 0, text = "\005", '\000' <repeats 30 times>}, motion = {type =
32768, timestamp = 3682, windowID = 0, which = 5, state = 0, x = 0, y = 0,
xrel = 0, yrel = 0}, button = {type = 32768, timestamp = 3682, windowID = 0,
which = 5, button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 =
0 '\000', x = 0, y = 0}, wheel = {type = 32768, timestamp = 3682, windowID =
0, which = 5, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 3682, which =
0, axis = 5 '\005', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0
'\000', value = 0, padding4 = 0}, jball = {type = 32768, timestamp = 3682,
which = 0, ball = 5 '\005', padding1 = 0 '\000', padding2 = 0 '\000', padding3
= 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, timestamp = 3682, which
= 0, hat = 5 '\005', value = 0 '\000', padding1 = 0 '\000', padding2 = 0
'\000'}, jbutton = {type = 32768, timestamp = 3682, which = 0, button = 5
'\005', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice =
{type = 32768, timestamp = 3682, which = 0}, caxis = {type = 32768, timestamp
= 3682, which = 0, axis = 5 '\005', padding1 = 0 '\000', padding2 = 0 '\000',
padding3 = 0 '\000', value = 0, padding4 = 0}, cbutton = {type = 32768,
timestamp = 3682, which = 0, button = 5 '\005', state = 0 '\000', padding1 = 0
'\000', padding2 = 0 '\000'}, cdevice = {type = 32768, timestamp = 3682, which
= 0}, quit = {type = 32768, timestamp = 3682}, user = {type = 32768, timestamp
= 3682, windowID = 0, code = 5, data1 = 0x0, data2 = 0x0}, syswm = {type =
32768, timestamp = 3682, msg = 0x500000000}, tfinger = {type = 32768,
timestamp = 3682, touchId = 21474836480, fingerId = 0, x = 0, y = 0, dx = 0,
dy = 0, pressure = 0}, mgesture = {type = 32768, timestamp = 3682, touchId =
21474836480, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding =
0}, dgesture = {type = 32768, timestamp = 3682, touchId = 21474836480,
gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {type = 32768,
timestamp = 3682, file = 0x500000000 <error: Cannot access memory at address
0x500000000>}, padding = "\000\200\000\000b\016\000\000\000\000\000\000\005",
'\000' <repeats 42 times>}
        __pMap_Scroll_User_Event = {type = 32768, common = {type = 32768,
timestamp = 0}, window = {type = 32768, timestamp = 0, windowID = 0, event = 6
'\006', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', data1 =
0, data2 = 0}, key = {type = 32768, timestamp = 0, windowID = 0, state = 6
'\006', repeat = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', keysym =
{scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, unused = 0}}, edit = {type
= 32768, timestamp = 0, windowID = 0, text = "\006", '\000' <repeats 30
times>, start = 0, length = 0}, text = {type = 32768, timestamp = 0, windowID
= 0, text = "\006", '\000' <repeats 30 times>}, motion = {type = 32768,
timestamp = 0, windowID = 0, which = 6, state = 0, x = 0, y = 0, xrel = 0,
yrel = 0}, button = {type = 32768, timestamp = 0, windowID = 0, which = 6,
button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x
= 0, y = 0}, wheel = {type = 32768, timestamp = 0, windowID = 0, which = 6, x
= 0, y = 0}, jaxis = {type = 32768, timestamp = 0, which = 0, axis = 6 '\006',
padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0,
padding4 = 0}, jball = {type = 32768, timestamp = 0, which = 0, ball = 6
'\006', padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', xrel =
0, yrel = 0}, jhat = {type = 32768, timestamp = 0, which = 0, hat = 6 '\006',
value = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {type =
32768, timestamp = 0, which = 0, button = 6 '\006', state = 0 '\000', padding1
= 0 '\000', padding2 = 0 '\000'}, jdevice = {type = 32768, timestamp = 0,
which = 0}, caxis = {type = 32768, timestamp = 0, which = 0, axis = 6 '\006',
padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', value = 0,
padding4 = 0}, cbutton = {type = 32768, timestamp = 0, which = 0, button = 6
'\006', state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice =
{type = 32768, timestamp = 0, which = 0}, quit = {type = 32768, timestamp =
0}, user = {type = 32768, timestamp = 0, windowID = 0, code = 6, data1 = 0x0,
data2 = 0x0}, syswm = {type = 32768, timestamp = 0, msg = 0x600000000},
tfinger = {type = 32768, timestamp = 0, touchId = 25769803776, fingerId = 0, x
= 0, y = 0, dx = 0, dy = 0, pressure = 0}, mgesture = {type = 32768, timestamp
= 0, touchId = 25769803776, dTheta = 0, dDist = 0, x = 0, y = 0, numFingers =
0, padding = 0}, dgesture = {type = 32768, timestamp = 0, touchId =
25769803776, gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop =
{type = 32768, timestamp = 0, file = 0x600000000 <error: Cannot access memory
at address 0x600000000>}, padding =
"\000\200\000\000\000\000\000\000\000\000\000\000\006", '\000' <repeats 42
times>}
        flags = <optimised out>
        __FUNCTION__ = "ui_main"
#16 0x000000000046ee3f in client_main (argc=1, argv=0x7ffd5d32a578) at
../../client/client_main.c:679
        i = 1
        loglevel = LOG_NORMAL
        ui_options = <optimised out>
        ui_separator = <optimised out>
        option = <optimised out>
        fatal_assertions = -1
        aii = 2
        __FUNCTION__ = "client_main"
#17 0x00007fbe1acbcec5 in __libc_start_main (main=0x43c9d0 <main>, argc=1,
argv=0x7ffd5d32a578, init=<optimised out>, fini=<optimised out>,
rtld_fini=<optimised out>, stack_end=0x7ffd5d32a568) at libc-start.c:287
        result = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -6844571284627975280,
4442592, 140726167053680, 0, 0, 6843651514404770704, 6809169106744578960},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x652d10 <__libc_csu_init>,
0x7ffd5d32a578}, data = {prev = 0x0, cleanup = 0x0, canceltype = 6630672}}}
        not_first_call = <optimised out>
#18 0x000000000043ca09 in _start ()
No symbol table info available.





    _______________________________________________________

Reply to this item at:

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

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


_______________________________________________
Freeciv-dev mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to