[ https://issues.apache.org/jira/browse/CARBONDATA-1878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ravindra Pesala resolved CARBONDATA-1878. ----------------------------------------- Resolution: Fixed Fix Version/s: 1.3.0 > JVM crash after off-heap-sort disabled > -------------------------------------- > > Key: CARBONDATA-1878 > URL: https://issues.apache.org/jira/browse/CARBONDATA-1878 > Project: CarbonData > Issue Type: Bug > Components: core > Affects Versions: 1.3.0 > Reporter: xuchuanyin > Assignee: xuchuanyin > Fix For: 1.3.0 > > Time Spent: 2h 20m > Remaining Estimate: 0h > > # SCENARIO > Recently I have fixed some issues in Carbondata. To perform a full test to cover all the code that has been modified by me, I performed some iteration of the whole test case. Each iteration is started with different key configurations that will affect the flow in the code. > After I set `enable.offheap.sort=false` (default value is true) in the configuration, running tests will always end up with JVM crash error. The error messages are shown as below: > ``` > # > # A fatal error has been detected by the Java Runtime Environment: > # > # SIGSEGV (0xb) at pc=0x00007f346b207ff1, pid=144619, tid=0x00007f346c2fc700 > # > # JRE version: Java(TM) SE Runtime Environment (8.0_111-b14) (build 1.8.0_111-b14) > # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.111-b14 mixed mode linux-amd64 compressed oops) > # Problematic frame: > # V [libjvm.so+0xa90ff1] Unsafe_SetNativeShort+0x51 > # > # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again > # > # An error report file with more information is saved as: > # /home/xu/ws/carbondata/hs_err_pid144619.log > # > # If you would like to submit a bug report, please visit: > # http://bugreport.java.com/bugreport/crash.jsp > # > Process finished with exit code 134 (interrupted by signal 6: SIGABRT) > ``` > # STEPS TOREPRODUCE > The error can be easily reproduced in different ways. Here I will provide a simple way to reproduce it: > 1. Find the test case `DateDataTypeDirectDictionaryTest`. > 2. Add the following code in the method `beforeAll`. > ``` > CarbonProperties.getInstance() > .addProperty(CarbonCommonConstants.ENABLE_OFFHEAP_SORT, "false") > ``` > 3. Run this test case. > 4. You will find the test failed with the above error. > 5. Replace the code in Step2 with the following code: > ``` > CarbonProperties.getInstance() > .addProperty(CarbonCommonConstants.ENABLE_OFFHEAP_SORT, "true") > ``` > 6. Run this test case. > 7. The test is success without error. > # ANALYZE & RESOLVE > I have reproduced this error and analyzed the core dump file. The final stack message in core dump looks like below: > ``` > Thread 73303: (state = IN_VM) > - sun.misc.Unsafe.putShort(long, short) @bci=0 (Interpreted frame) > - org.apache.carbondata.core.indexstore.UnsafeMemoryDMStore.addToUnsafe(org.apache.carbondata.core.indexstore.schema.CarbonRowSchema, org.apache.carbondata.core.indexstore.row.DataMapRow, int) @bci=781, line=150 (Interpreted frame) > - org.apache.carbondata.core.indexstore.UnsafeMemoryDMStore.addIndexRowToUnsafe(org.apache.carbondata.core.indexstore.row.DataMapRow) @bci=59, line=99 (Interpreted frame) > ... > ``` > After inspecting the code, I found there lies bug in `UnsafeMemoryDMStore line=150` while writing length to unsafe memory -- It writes with wrong base object. -- This message was sent by Atlassian JIRA (v6.4.14#64029) |
Free forum by Nabble | Edit this page |