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

                 Summary: Floating point exception after clicking on "Load"
                 Project: Freeciv
            Submitted by: jtn
            Submitted on: Sun 25 Sep 2016 10:30:13 AM BST
                Category: client-sdl2
                Severity: 4 - Important
                Priority: 5 - Normal
                  Status: None
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
                 Release: S2_6 r33879
         Discussion Lock: Any
        Operating System: GNU/Linux
         Planned Release: 2.6.0, 3.0.0
 Contains string changes: None

    _______________________________________________________

Details:

If I start the SDL2 client and go to load a saved game (click on "Load Game"),
it briefly displays the loading screen and then dies with SIGFPE.

My ~/.freeciv/saves contains 2894 files, if it makes a difference... display
is fullscreen on a 1680x1050 monitor.


#0  create_bcgnd_surf (ptheme=0x16becd0, state=<optimised out>, 
    width=width@entry=1660, height=height@entry=19)
    at ../../../client/gui-sdl2/widget.c:100
        zoom = <optimised out>
        iTile_width_len_end = 0
        iTile_width_len_mid = 0
        iTile_count_len_mid = <optimised out>
        iTile_width_height_end = <optimised out>
        iTile_width_height_mid = <optimised out>
        iTile_count_height_mid = <optimised out>
        i = <optimised out>
        j = <optimised out>
        src = {x = -2034868656, y = 32766, w = -1477598108, h = 32622}
        des = {x = 52076992, y = 0, w = 52077184, h = 0}
        pBackground = 0x0
        iStart_y = 0
#1  0x000000000046294e in redraw_edit (pEdit_Widget=0x1a974e0)
    at ../../../client/gui-sdl2/widget_edit.c:177
        iRet = 0
        rDest = {x = 10, y = 986, w = 0, h = 0}
        pEdit = 0x0
        pText = 0x31aa1c0
        ret = <optimised out>
#2  0x000000000046018c in widget_redraw (pWidget=0x1a974e0)
    at ../../../client/gui-sdl2/widget.h:274
No locals.
#3  redraw_group (pBeginGroupWidgetList=0x31a9050, 
    pEndGroupWidgetList=<optimised out>, add_to_update=add_to_update@entry=0)
    at ../../../client/gui-sdl2/widget.c:740
        count = 4
        pTmpWidget = 0x1a974e0
#4  0x00000000004d859f in real_conn_list_dialog_update ()
    at ../../../client/gui-sdl2/chatline.c:651
        pBuf = <optimised out>
        pWindow = 0x4b79700
        pstr = 0x0
        create = <optimised out>
        __FUNCTION__ = "real_conn_list_dialog_update"
#5  0x00000000004cf5d2 in update_unqueue (data=<optimised out>)
    at ../../client/update_queue.c:319
        callback = 0x4d8340 <real_conn_list_dialog_update>
        uq_data = <optimised out>
        MY_mem_MY_iter = 0x7ffe86b65f10 "\240\304b"
        MY_it_MY_iter = 0x7ffe86b65f10
        hash = 0x4b79890
#6  0x000000000043d9c7 in gui_event_loop (pData=pData@entry=0x0, 
    loop_action=loop_action@entry=0x0, 
    key_down_handler=key_down_handler@entry=0x43d350 <main_key_down_handler>,

    key_up_handler=key_up_handler@entry=0x43cfe0 <main_key_up_handler>, 
    textinput_handler=textinput_handler@entry=0x0, 
    mouse_button_down_handler=mouse_button_down_handler@entry=0x43d570
<main_mouse_button_down_handler>, 
    mouse_button_up_handler=mouse_button_up_handler@entry=0x43d2c0
<main_mouse_button_up_handler>, 
    mouse_motion_handler=mouse_motion_handler@entry=0x43d000
<main_mouse_motion_handler>) at ../../../client/gui-sdl2/gui_main.c:755
        ID = <optimised out>
        tv = {tv_sec = 0, tv_usec = 9996}
        civfdset = {fds_bits = {2048, 0 <repeats 15 times>}}
        t_current = <optimised out>
        t_last_unit_anim = 5437
        t_last_map_scrolling = 5437
        real_timer_next_call = 6437
        result = 1
#7  0x000000000043e249 in ui_main (argc=argc@entry=1, 
    argv=argv@entry=0x7ffe86b664c8) at
../../../client/gui-sdl2/gui_main.c:992
        __Net_User_Event = {type = 32768, common = {type = 32768, 
            timestamp = 5437}, window = {type = 32768, timestamp = 5437, 
            windowID = 0, event = 1 '\001', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, 
          key = {type = 32768, timestamp = 5437, 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 = 5437, windowID = 0, 
            text = "\001", '\000' <repeats 30 times>, start = 0, length = 0},

          text = {type = 32768, timestamp = 5437, windowID = 0, 
            text = "\001", '\000' <repeats 30 times>}, motion = {type = 32768,

            timestamp = 5437, windowID = 0, which = 1, state = 0, x = 0, 
            y = 0, xrel = 0, yrel = 0}, button = {type = 32768, 
            timestamp = 5437, windowID = 0, which = 1, button = 0 '\000', 
            state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x = 0, 
            y = 0}, wheel = {type = 32768, timestamp = 5437, windowID = 0, 
            which = 1, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 5437,

            which = 0, axis = 1 '\001', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', value = 0, 
            padding4 = 0}, jball = {type = 32768, timestamp = 5437, which = 0,

            ball = 1 '\001', padding1 = 0 '\000', padding2 = 0 '\000', 
            padding3 = 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, 
            timestamp = 5437, which = 0, hat = 1 '\001', value = 0 '\000', 
            padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {
            type = 32768, timestamp = 5437, which = 0, button = 1 '\001', 
            state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, 
          jdevice = {type = 32768, timestamp = 5437, which = 0}, caxis = {
            type = 32768, timestamp = 5437, which = 0, axis = 1 '\001', 
            padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', 
            value = 0, padding4 = 0}, cbutton = {type = 32768, 
            timestamp = 5437, which = 0, button = 1 '\001', state = 0 '\000',

            padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice = {
            type = 32768, timestamp = 5437, which = 0}, quit = {type = 32768,

            timestamp = 5437}, user = {type = 32768, timestamp = 5437, 
            windowID = 0, code = 1, data1 = 0x0, data2 = 0x0}, syswm = {
            type = 32768, timestamp = 5437, msg = 0x100000000}, tfinger = {
            type = 32768, timestamp = 5437, touchId = 4294967296, 
            fingerId = 0, x = 0, y = 0, dx = 0, dy = 0, pressure = 0}, 
          mgesture = {type = 32768, timestamp = 5437, touchId = 4294967296, 
            dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0},

          dgesture = {type = 32768, timestamp = 5437, touchId = 4294967296, 
            gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {
            type = 32768, timestamp = 5437, 
            file = 0x100000000 <error: Cannot access memory at address
0x100000000>}, 
          padding = "\000\200\000\000=\025\000\000\000\000\000\000\001",
'\000' <repeats 42 times>}
        __Anim_User_Event = {type = 32768, common = {type = 32768, 
            timestamp = 5437}, window = {type = 32768, timestamp = 5437, 
            windowID = 0, event = 2 '\002', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, 
          key = {type = 32768, timestamp = 5437, 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 = 5437, windowID = 0, 
            text = "\002", '\000' <repeats 30 times>, start = 0, length = 0},

          text = {type = 32768, timestamp = 5437, windowID = 0, 
            text = "\002", '\000' <repeats 30 times>}, motion = {type = 32768,

            timestamp = 5437, windowID = 0, which = 2, state = 0, x = 0, 
            y = 0, xrel = 0, yrel = 0}, button = {type = 32768, 
            timestamp = 5437, windowID = 0, which = 2, button = 0 '\000', 
            state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x = 0, 
            y = 0}, wheel = {type = 32768, timestamp = 5437, windowID = 0, 
            which = 2, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 5437,

            which = 0, axis = 2 '\002', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', value = 0, 
            padding4 = 0}, jball = {type = 32768, timestamp = 5437, which = 0,

            ball = 2 '\002', padding1 = 0 '\000', padding2 = 0 '\000', 
            padding3 = 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, 
            timestamp = 5437, which = 0, hat = 2 '\002', value = 0 '\000', 
            padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {
            type = 32768, timestamp = 5437, which = 0, button = 2 '\002', 
            state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, 
          jdevice = {type = 32768, timestamp = 5437, which = 0}, caxis = {
            type = 32768, timestamp = 5437, which = 0, axis = 2 '\002', 
            padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', 
            value = 0, padding4 = 0}, cbutton = {type = 32768, 
            timestamp = 5437, which = 0, button = 2 '\002', state = 0 '\000',

            padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice = {
            type = 32768, timestamp = 5437, which = 0}, quit = {type = 32768,

            timestamp = 5437}, user = {type = 32768, timestamp = 5437, 
            windowID = 0, code = 2, data1 = 0x0, data2 = 0x0}, syswm = {
            type = 32768, timestamp = 5437, msg = 0x200000000}, tfinger = {
            type = 32768, timestamp = 5437, touchId = 8589934592, 
            fingerId = 0, x = 0, y = 0, dx = 0, dy = 0, pressure = 0}, 
          mgesture = {type = 32768, timestamp = 5437, touchId = 8589934592, 
            dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0},

          dgesture = {type = 32768, timestamp = 5437, touchId = 8589934592, 
            gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {
            type = 32768, timestamp = 5437, 
            file = 0x200000000 <error: Cannot access memory at address
0x200000000>}, 
          padding = "\000\200\000\000=\025\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 = 6041}, window = {type = 32768, timestamp = 6041, 
            windowID = 0, event = 5 '\005', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, 
          key = {type = 32768, timestamp = 6041, 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 = 6041, windowID = 0, 
            text = "\005", '\000' <repeats 30 times>, start = 0, length = 0},

          text = {type = 32768, timestamp = 6041, windowID = 0, 
            text = "\005", '\000' <repeats 30 times>}, motion = {type = 32768,

            timestamp = 6041, windowID = 0, which = 5, state = 0, x = 0, 
            y = 0, xrel = 0, yrel = 0}, button = {type = 32768, 
            timestamp = 6041, windowID = 0, which = 5, button = 0 '\000', 
            state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x = 0, 
            y = 0}, wheel = {type = 32768, timestamp = 6041, windowID = 0, 
            which = 5, x = 0, y = 0}, jaxis = {type = 32768, timestamp = 6041,

            which = 0, axis = 5 '\005', padding1 = 0 '\000', 
            padding2 = 0 '\000', padding3 = 0 '\000', value = 0, 
            padding4 = 0}, jball = {type = 32768, timestamp = 6041, which = 0,

            ball = 5 '\005', padding1 = 0 '\000', padding2 = 0 '\000', 
            padding3 = 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 32768, 
            timestamp = 6041, which = 0, hat = 5 '\005', value = 0 '\000', 
            padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {
            type = 32768, timestamp = 6041, which = 0, button = 5 '\005', 
            state = 0 '\000', padding1 = 0 '\000', padding2 = 0 '\000'}, 
          jdevice = {type = 32768, timestamp = 6041, which = 0}, caxis = {
            type = 32768, timestamp = 6041, which = 0, axis = 5 '\005', 
            padding1 = 0 '\000', padding2 = 0 '\000', padding3 = 0 '\000', 
            value = 0, padding4 = 0}, cbutton = {type = 32768, 
            timestamp = 6041, which = 0, button = 5 '\005', state = 0 '\000',

            padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice = {
            type = 32768, timestamp = 6041, which = 0}, quit = {type = 32768,

            timestamp = 6041}, user = {type = 32768, timestamp = 6041, 
            windowID = 0, code = 5, data1 = 0x0, data2 = 0x0}, syswm = {
            type = 32768, timestamp = 6041, msg = 0x500000000}, tfinger = {
            type = 32768, timestamp = 6041, touchId = 21474836480, 
            fingerId = 0, x = 0, y = 0, dx = 0, dy = 0, pressure = 0}, 
          mgesture = {type = 32768, timestamp = 6041, touchId = 21474836480, 
            dTheta = 0, dDist = 0, x = 0, y = 0, numFingers = 0, padding = 0},

          dgesture = {type = 32768, timestamp = 6041, touchId = 21474836480, 
            gestureId = 0, numFingers = 0, error = 0, x = 0, y = 0}, drop = {
            type = 32768, timestamp = 6041, 
            file = 0x500000000 <error: Cannot access memory at address
0x500000000>}, 
          padding = "\000\200\000\000\231\027\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"
#8  0x000000000046f298 in client_main (argc=1, argv=0x7ffe86b664c8)
    at ../../client/client_main.c:677
        i = 1
        loglevel = LOG_NORMAL
        ui_options = <optimised out>
        ui_separator = <optimised out>
        option = <optimised out>
        fatal_assertions = -1
        aii = 2
        __FUNCTION__ = "client_main"
#9  0x00007f6ea7dfef45 in __libc_start_main (main=0x43cdb0 <main>, argc=1, 
    argv=0x7ffe86b664c8, init=<optimised out>, fini=<optimised out>, 
    rtld_fini=<optimised out>, stack_end=0x7ffe86b664b8) at libc-start.c:287
        result = <optimised out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -5419886086210907572, 
                4443584, 140731158521024, 0, 0, 5419448002902299212, 
                5338452131318534732}, mask_was_saved = 0}}, priv = {pad = {
              0x0, 0x0, 0x654860 <__libc_csu_init>, 0x7ffe86b664c8}, data = {
              prev = 0x0, cleanup = 0x0, canceltype = 6637664}}}
        not_first_call = <optimised out>
#10 0x000000000043cde9 in _start ()
No symbol table info available.





    _______________________________________________________

Reply to this item at:

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

_______________________________________________
  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