[ 
https://issues.apache.org/jira/browse/TRAFODION-1705?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jian Jin updated TRAFODION-1705:
--------------------------------
    Assignee: mashengchen

> JVM crashes when trying to populate Trafodion table with a long key
> -------------------------------------------------------------------
>
>                 Key: TRAFODION-1705
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-1705
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: dtm
>    Affects Versions: 2.0-incubating, 1.3-incubating
>         Environment: I encountered this problem on a workstation, but I 
> expect it will happen anywhere.
>            Reporter: David Wayne Birdsall
>            Assignee: mashengchen
>
> The following script run in sqlci produces a JVM crash:
> ?section createit
> CREATE TABLE  t807e
> (
> C1 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C2 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C3 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C4 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C5 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C6 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C7 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C8 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C9 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C10 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C11 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C12 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C13 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C14 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C15 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C16 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C17 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C18 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C19 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C215 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' NOT NULL NOT DROPPABLE SERIALIZED
> , C300 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C301 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C302 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C303 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C304 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C305 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C306 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C307 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C308 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C309 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C310 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C311 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C312 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C313 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C314 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C315 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C316 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C317 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C318 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C319 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C320 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C321 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C322 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C323 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C324 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C325 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C326 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C327 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C328 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C329 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C330 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C331 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C332 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C333 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C334 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C335 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C336 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C337 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C338 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C339 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C340 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C341 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , C342 VARCHAR(50 CHARS) CHARACTER SET UTF8
> COLLATE DEFAULT DEFAULT _UTF8'' SERIALIZED
> , PRIMARY KEY (C4 ASC, C5 ASC, C3 ASC, C2 ASC, C215 ASC, C1
> ASC)
> )
> SALT USING 4 PARTITIONS
> ON (C3)
> ;
> ?section populateit
> -- put some data into the table
> upsert into t807e (c4,c5,c3,c2,c215,c1)
> select 
>   cast(x1 as varchar(50)),
>   cast(x2+10*x3 as varchar(50)),
>   cast(x4+10*x5+100*x6+1000*x7 as varchar(50)),
>   cast(x1+x2+10*x3+x4+10*x5+100*x6+1000*x7 as varchar(50)),
>   cast(10*x1+x2 as varchar(50)),
>   cast(10*x2+x7 as varchar(50))
> -- the from clause below creates 2,000,000 rows, the cross product of
> -- 6 copies of { 0, ... 9 } and one copy of { 0, 1 }
>   from (values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) T(x1)
> transpose 0,1,2,3,4,5,6,7,8,9 as x2
> transpose 0,1,2,3,4,5,6,7,8,9 as x3
> transpose 0,1,2,3,4,5,6,7,8,9 as x4  -- was 0,1,2 when it worked
> transpose 0,1 as x5
> transpose 0,1 as x6
> transpose 0,1 as x7;
> The CREATE statement runs fine. When the UPSERT statement is executed, sqlci 
> fails as follows:
> >>upsert into t807e (c4,c5,c3,c2,c215,c1)
> +>select 
> +>  cast(x1 as varchar(50)),
> +>  cast(x2+10*x3 as varchar(50)),
> +>  cast(x4+10*x5+100*x6+1000*x7 as varchar(50)),
> +>  cast(x1+x2+10*x3+x4+10*x5+100*x6+1000*x7 as varchar(50)),
> +>  cast(10*x1+x2 as varchar(50)),
> +>  cast(10*x2+x7 as varchar(50))
> +>-- the from clause below creates 2,000,000 rows, the cross product of
> +>-- 6 copies of { 0, ... 9 } and one copy of { 0, 1 }
> +>  from (values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) T(x1)
> +>transpose 0,1,2,3,4,5,6,7,8,9 as x2
> +>transpose 0,1,2,3,4,5,6,7,8,9 as x3
> +>transpose 0,1,2,3,4,5,6,7,8,9 as x4  -- was 0,1,2 when it worked
> +>transpose 0,1 as x5
> +>transpose 0,1 as x6
> +>transpose 0,1 as x7;
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  SIGSEGV (0xb) at pc=0x0000000000000000, pid=25205, tid=140737353948128
> #
> # JRE version: OpenJDK Runtime Environment (7.0_91) (build 
> 1.7.0_91-mockbuild_2015_10_21_19_56-b00)
> # Java VM: OpenJDK 64-Bit Server VM (24.91-b01 mixed mode linux-amd64 
> compressed oops)
> # Derivative: IcedTea 2.6.2
> # Distribution: CentOS release 6.7 (Final), package rhel-2.6.2.2.el6_7-x86_64 
> u91-b00
> # Problematic frame:
> # C  0x0000000000000000
> #
> # Core dump written. Default location: /mnt/birdsall/Trafodion807/core or 
> core.25205 (max size 1000000 kB). To ensure a full core dump, try "ulimit -c 
> unlimited" before starting Java again
> #
> # An error report file with more information is saved as:
> # /tmp/jvm-25205/hs_error.log
> #
> # If you would like to submit a bug report, please include
> # instructions on how to reproduce the bug and visit:
> #   http://icedtea.classpath.org/bugzilla
> # The crash happened outside the Java Virtual Machine in native code.
> # See problematic frame for where to report the bug.
> #
> Aborted (core dumped)
> Debugging this, the root cause is that in module TransactionState.java, we 
> copy a TransactionRegionLocation object into a byte array, for passing to the 
> native method, registerRegion. That method is expecting an object of at most 
> 2048 bytes. However in this example, the length of the byte array is 2465 
> bytes. The C++ native method registerRegion does a memcpy into a stack 
> variable of length 2048, and passes this along with the length value of 2465 
> to C++ method TM_Transaction::register_region. That method does another 
> memcpy of this data into another local stack variable, but uses the length 
> 2465 passed in. We get unlucky this time and the buffer overrun overwrites 
> part of the stack frame with the return address. When this method tries to 
> return, we get the crash observed above.
> So, in a nutshell, the problem is the DTM code implicitly imposes a limit on 
> the key size of Trafodion objects and fails catastrophically when this limit 
> is exceeded.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to