Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#4459 closed defect (fixed)

ST_Subdivide can't handle intermediate empties

Reported by: komzpa Owned by: komzpa
Priority: medium Milestone: PostGIS 3.0.0
Component: postgis Version: master
Keywords: Cc:

Description

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: файл ці тэчка ня йснуе.
(gdb) bt full
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = {__val = {0, 140373678436727, 4222451712, 94891443462432, 94891443462533, 94891443462432, 94891443462432, 94891443462547, 94891443462732, 94891443462432, 94891443462732, 0, 0, 0, 0, 0}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#1  0x00007fab4b36d535 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x564da2b995a0, sa_sigaction = 0x564da2b995a0}, sa_mask = {__val = {0, 94891443462432, 2, 0, 0, 0, 21474836480, 140720557150632, 140720557150480, 140373693094572, 140373693094572, 0, 8470279566131323136, 140373679634919, 0, 140373693094572}}, sa_flags = -1298734224, sa_restorer = 0x7fa9b296e3c6}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007fab4b36d40f in __assert_fail_base (fmt=0x7fab4c1cdaac <error: Cannot access memory at address 0x7fab4c1cdaac>, assertion=0x7fa9b296e3c6 "original", file=0x7fa9b296e370 "gbox.c", line=436, function=<optimized out>) at assert.c:92
        str = 0x564da2b995a0 "\200T¢MV"
        total = 4096
#3  0x00007fab4b37d012 in __GI___assert_fail (assertion=assertion@entry=0x7fa9b296e3c6 "original", file=file@entry=0x7fa9b296e370 "gbox.c", line=line@entry=436, function=function@entry=0x7fa9b296e548 <__PRETTY_FUNCTION__.7057> "gbox_duplicate") at assert.c:101
No locals.
#4  0x00007fa9b2928acb in gbox_duplicate (original=0x0, duplicate=0x7ffc0ed252c0) at gbox.c:436
        __PRETTY_FUNCTION__ = "gbox_duplicate"
#5  gbox_duplicate (original=<optimized out>, duplicate=duplicate@entry=0x7ffc0ed252c0) at gbox.c:433
        __PRETTY_FUNCTION__ = "gbox_duplicate"
#6  0x00007fa9b28ffc77 in lwgeom_subdivide_recursive (geom=0x564da2c5b288, dimension=dimension@entry=2 '\002', maxvertices=maxvertices@entry=100, depth=depth@entry=0, col=col@entry=0x564da2beccd0) at lwgeom.c:2232
        clip = {flags = 4, xmin = 0, xmax = 0, ymin = 2.0158960018122612e-312, ymax = 2.5251749917921463e-312, zmin = 2.7373745709578427e-312, zmax = 0, mmin = 4.6882601095344916e-310, mmax = 6.9353812796376515e-310}
        subbox1 = {flags = 46352, xmin = 1.0113523770370317e-320, xmax = 1.0118464426828729e-320, ymin = 6.2746337021838311e-322, ymax = -nan(0xfffffffffff28), zmin = 4.3477776834029696e-322, zmax = 4.6882602236743276e-310, mmin = 6.9353812123444778e-310, mmax = 4.6882601265465552e-310}
        subbox2 = {flags = 21408, xmin = 4.6882601708978401e-310, xmax = 1.5810100666919889e-322, ymin = 4.6882584275899755e-310, ymax = 4.6882601708978401e-310, zmin = 1.1857575500189917e-322, zmax = 1.8774494541967369e-322, mmin = 4.6882602308038925e-310, mmax = 6.9525192952031863e-310}
        nvertices = 0
        i = <optimized out>
        split_ordinate = <optimized out>
        width = <optimized out>
        height = <optimized out>
        pivot = 1.7976931348623157e+308
        center = 1.7976931348623157e+308
        lwpoly = 0x0
        __func__ = "lwgeom_subdivide_recursive"
#7  0x00007fa9b28ffdac in lwgeom_subdivide_recursive (geom=geom@entry=0x564da2b56920, dimension=<optimized out>, maxvertices=maxvertices@entry=100, depth=depth@entry=0, col=col@entry=0x564da2beccd0) at lwgeom.c:2266
        incol = <optimized out>
        clip = {flags = 4, xmin = 3728985.5, xmax = 3732474.75, ymin = 7425804.5, ymax = 7429196, zmin = 4.6882601987840909e-310, zmax = 6.9350991781679939e-310, mmin = 4.6882601709112787e-310, mmax = 4.6882601897529661e-310}
        subbox1 = {flags = 128, xmin = 4.6882602236312451e-310, xmax = 4.6882601709168122e-310, ymin = 6.9350424646078807e-310, ymax = 4.6882601708978401e-310, zmin = 3.5572726500569751e-322, zmax = 6.9525192952213679e-310, mmin = 1.9762625833649862e-323, mmax = 4.6882601708978401e-310}
        subbox2 = {flags = 3857, xmin = 3.4584595208887258e-323, xmax = 6.9525192952189964e-310, ymin = 4.68825842874935e-310, ymax = 4.6882602013188453e-310, zmin = 0, zmax = 0, mmin = 6.9350424522132558e-310, mmax = 1.9056111960096879e-320}
        nvertices = 0
        i = 0
        split_ordinate = <optimized out>
        width = <optimized out>
        height = 3391.5
        pivot = 1.7976931348623157e+308
        center = 1.7976931348623157e+308
        lwpoly = 0x0
        __func__ = "lwgeom_subdivide_recursive"
#8  0x00007fa9b2901921 in lwgeom_subdivide (geom=0x564da2b56920, maxvertices=100) at lwgeom.c:2414
        col = 0x564da2beccd0
        __func__ = "lwgeom_subdivide"
#9  0x00007fa9b28a8e29 in ST_Subdivide (fcinfo=0x564da2be0468) at lwgeom_dump.c:372
        geom = <optimized out>
        maxvertices = <optimized out>
        gser = <optimized out>
        col = <optimized out>
        rsi = <optimized out>
        funcctx = 0x564da2b568b0
        fctx = <optimized out>
        oldcontext = 0x564da2bb3a60
#10 0x0000564da07047fc in ExecMakeFunctionResultSet (fcache=<optimized out>, econtext=econtext@entry=0x564da2bb2410, argContext=0x564da2c05c00, isNull=0x564da2bb39b0, isDone=isDone@entry=0x564da2bdf668) at ./build/../src/backend/executor/execSRF.c:606
        arguments = <optimized out>
        result = <optimized out>
        fcinfo = 0x564da2be0468
        fcusage = {fs = 0x0, save_f_total_time = {tv_sec = 94891442645620, tv_nsec = 94891442645784}, save_total = {tv_sec = 94891442645728, tv_nsec = 94891442645616}, f_start = {tv_sec = 94891442644624, tv_nsec = 94891442641488}}
        rsinfo = {type = T_ReturnSetInfo, econtext = 0x564da2bb2410, expectedDesc = 0x564da2bdf308, allowedModes = 3, returnMode = SFRM_ValuePerCall, isDone = ExprSingleResult, setResult = 0x0, setDesc = 0x0}
        callit = true
        i = <optimized out>
        __func__ = "ExecMakeFunctionResultSet"
#11 0x0000564da07236ca in ExecProjectSRF (node=node@entry=0x564da2bb2530, continuing=continuing@entry=false) at ./build/../src/backend/executor/nodeProjectSet.c:175
        elem = <optimized out>
        isdone = 0x564da2bdf668
        result = 0x564da2bb3998
        isnull = <optimized out>
        resultSlot = 0x564da2bb3950
        econtext = 0x564da2bb2410
        oldcontext = 0x564da2bb1a50
        hassrf = <optimized out>
        hasresult = false
        argno = 0
#12 0x0000564da07237a4 in ExecProjectSet (pstate=0x564da2bb2530) at ./build/../src/backend/executor/nodeProjectSet.c:105
        node = 0x564da2bb2530
        outerTupleSlot = <optimized out>
        resultSlot = <optimized out>
        outerPlan = 0x564da2bb2690
        econtext = 0x564da2bb2410
#13 0x0000564da0701ac9 in ExecProcNodeInstr (node=0x564da2bb2530) at ./build/../src/backend/executor/execProcnode.c:461
        result = <optimized out>
#14 0x0000564da06faeb3 in ExecProcNode (node=0x564da2bb2530) at ./build/../src/include/executor/executor.h:239
No locals.
#15 ExecutePlan (execute_once=<optimized out>, dest=0x564da2b2d510, direction=<optimized out>, numberTuples=0, sendTuples=<optimized out>, operation=CMD_SELECT, use_parallel_mode=<optimized out>, planstate=0x564da2bb2530, estate=0x564da2bb1b60) at ./build/../src/backend/executor/execMain.c:1648
        slot = <optimized out>
        current_tuple_count = 4
        slot = <optimized out>
        current_tuple_count = <optimized out>
#16 standard_ExecutorRun (queryDesc=0x564da2b2e458, direction=<optimized out>, count=0, execute_once=<optimized out>) at ./build/../src/backend/executor/execMain.c:365
        estate = 0x564da2bb1b60
        operation = CMD_SELECT
        dest = 0x564da2b2d510
        sendTuples = <optimized out>
        oldcontext = 0x564da2b2caf0
        __func__ = "standard_ExecutorRun"
#17 0x00007fab4c1bb715 in explain_ExecutorRun (queryDesc=0x564da2b2e458, direction=ForwardScanDirection, count=0, execute_once=<optimized out>) at ./build/../contrib/auto_explain/auto_explain.c:322
        save_exception_stack = 0x7ffc0ed25a30
        save_context_stack = 0x0
        local_sigjmp_buf = {{__jmpbuf = {140366884896768, -4010915758318949467, 140366885441632, 140366884906560, 94891442103384, 94891442099472, -4010915758285395035, -3965181094665917531}, __mask_was_saved = 0, __saved_mask = {__val = {94891404157904, 140720557152464, 94891404494067, 140366885441632, 140366884896768, 94891404157904, 140720557152608, 94891442644272, 94891442099696, 140720557152528, 94891404494161, 
                140366885441632, 140366884896768, 140366885441632, 140366884896768, 140366885441632}}}}
#18 0x0000564da06ff5a6 in ParallelQueryMain (seg=seg@entry=0x564da2a54e20, toc=toc@entry=0x7fa9b6500000) at ./build/../src/backend/executor/execParallel.c:1399
        fpes = <optimized out>
        buffer_usage = <optimized out>
        receiver = 0x564da2b2d510
--Type <RET> for more, q to quit, c to continue without paging--
        queryDesc = 0x564da2b2e458
        instrumentation = <optimized out>
        jit_instrumentation = 0x7fa9b65023e0
        instrument_options = <optimized out>
        area_space = <optimized out>
        area = <optimized out>
        pwcxt = {seg = 0x564da2a54e20, toc = 0x7fa9b6500000}
#19 0x0000564da05cccc7 in ParallelWorkerMain (main_arg=<optimized out>) at ./build/../src/backend/access/transam/parallel.c:1431
        seg = 0x564da2a54e20
        toc = 0x7fa9b6500000
        fps = 0x7fa9b65a6440
        error_queue_space = <optimized out>
        mq = <optimized out>
        mqh = <optimized out>
        libraryspace = <optimized out>
        entrypointstate = <optimized out>
        library_name = <optimized out>
        function_name = <optimized out>
        entrypt = 0x564da06ff390 <ParallelQueryMain>
        gucspace = <optimized out>
        combocidspace = <optimized out>
        tsnapspace = <optimized out>
        asnapspace = <optimized out>
        tstatespace = <optimized out>
        reindexspace = <optimized out>
        relmapperspace = <optimized out>
        enumblacklistspace = <optimized out>
        msgbuf = {data = 0x0, len = 8, maxlen = 1024, cursor = 75}
        session_dsm_handle_space = <optimized out>
        __func__ = "ParallelWorkerMain"
#20 0x0000564da07d646e in StartBackgroundWorker () at ./build/../src/backend/postmaster/bgworker.c:834
        local_sigjmp_buf = {{__jmpbuf = {94891441211920, -4010915758251840603, 7, 94891409541712, 94891441606768, 94891441608128, -4010915758224577627, -7262898823278367835}, __mask_was_saved = 1, __saved_mask = {__val = {18446744066192964103, 0, 94891441244880, 140720557152976, 94891406982373, 94891441244880, 94891441244880, 140720557152976, 94891407004545, 94891441606768, 0, 140720557153040, 94891406982373, 
                94891409541712, 0, 7}}}}
        worker = 0x564da2a54a10
        entrypt = <optimized out>
        __func__ = "StartBackgroundWorker"
#21 0x0000564da07e38a9 in do_start_bgworker (rw=<optimized out>) at ./build/../src/backend/postmaster/postmaster.c:5763
        worker_pid = <optimized out>
        worker_pid = <optimized out>
        __func__ = "do_start_bgworker"
        __errno_location = <optimized out>
        __errno_location = <optimized out>
#22 maybe_start_bgworkers () at ./build/../src/backend/postmaster/postmaster.c:5976
        rw = <optimized out>
        num_launched = 7
        now = 0
        iter = {cur = 0x564da2ab55c0, next = 0x564da2aa7c20, prev = 0x564da2aae0e0}
#23 0x0000564da07e424b in sigusr1_handler (postgres_signal_arg=<optimized out>) at ./build/../src/backend/postmaster/postmaster.c:5161
        save_errno = 4
        __func__ = "sigusr1_handler"
#24 <signal handler called>
No locals.
#25 0x00007fab4b45c007 in __GI___select (nfds=nfds@entry=7, readfds=readfds@entry=0x7ffc0ed269b0, writefds=writefds@entry=0x0, exceptfds=exceptfds@entry=0x0, timeout=timeout@entry=0x7ffc0ed26910) at ../sysdeps/unix/sysv/linux/select.c:41
        resultvar = 18446744073709551612
        sc_ret = <optimized out>
#26 0x0000564da07e49a6 in ServerLoop () at ./build/../src/backend/postmaster/postmaster.c:1668
        timeout = {tv_sec = 59, tv_usec = 998696}
        rmask = {fds_bits = {104, 0 <repeats 15 times>}}
        selres = <optimized out>
        now = <optimized out>
        readmask = {fds_bits = {104, 0 <repeats 15 times>}}
        nSockets = 7
        last_lockfile_recheck_time = 1563436410
        last_touch_time = 1563433829
        __func__ = "ServerLoop"
#27 0x0000564da07e652f in PostmasterMain (argc=5, argv=0x564da2a53c30) at ./build/../src/backend/postmaster/postmaster.c:1377
        opt = <optimized out>
        status = <optimized out>
        userDoption = <optimized out>
        listen_addr_saved = <optimized out>
        i = <optimized out>
        output_config_variable = <optimized out>
        __func__ = "PostmasterMain"
#28 0x0000564da054eefd in main (argc=5, argv=0x564da2a53c30) at ./build/../src/backend/main/main.c:228
No locals.

Change History (3)

comment:2 by komzpa, 5 years ago

Resolution: fixed
Status: assignedclosed

In 17667:

ST_Subdivide crash on intermediate EMPTY fix.

Closes #4459
Closes https://github.com/postgis/postgis/pull/456

comment:3 by komzpa, 5 years ago

In 17668:

ST_Subdivide crash on intermediate EMPTY fix.

Closes #4459

Note: See TracTickets for help on using tickets.