当前使用jdk 版本是1.8, fastjson 版本是1.2.15 近期有两台服务器,都报了crash错误,错误日志如下: 大神们,能帮忙确认下,是否跟fastjson有关联呢?
[alibaba/fastjson]近期有两个应用都报了jvm crash日志,日志文件都指向fastjson
回答
不确认哦,升级到1.2.41版本试试看
提示信息很明确:try ulimit -c unlimited
这是调用链和内存当时的情况,也就是说需要dump文件信息,才能更好的定位问题么?
应该是这句: char newValue[] = new char[newCapacity];
看样子,问题出现在内存不够上。 要不是有mem leak,就是配置的内存太小了。
如果是mem leak 应该会是jvm报oom的问题,当前是直接crash掉。如下有系统当前的内存和jvm内存配置以及gc情况。
jmap histo一下。
1.2.39 也碰到了该问题
#
SIGSEGV (0xb) at pc=0x00007f984283565a, pid=18176, tid=140289548531456#
JRE version: Java(TM) SE Runtime Environment (7.0_80-b15) (build 1.7.0_80-b15) Java VM: Java HotSpot(TM) 64-Bit Server VM (24.80-b11 mixed mode linux-amd64 compressed oops) Problematic frame: J 5257 C2 com.alibaba.fastjson.serializer.SerializeWriter.writeFieldValueStringWithDoubleQuoteCheck(CLjava/lang/String;Ljava/lang/String;)V (1717 bytes) @ 0x00007f984283565a [0x00007f9842835600+0x5a]#
Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again#
If you would like to submit a bug report, please visit: http://bugreport.java.com/bugreport/crash.jsp#
--------------- T H R E A D ---------------
Current thread (0x00007f97fc003000): JavaThread "XNIO-3 task-49" [_thread_in_Java, id=18770, stack(0x00007f97b4a4b000,0x00007f97b4b4c000)]
siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000043
Registers: RAX=0x00000000f4ecbef8, RBX=0x00000000caed6690, RCX=0x00000000000000a5, RDX=0x000000000000002c RSP=0x00007f97b4b47010, RBP=0x0000000000000000, RSI=0x00000000bae34258, RDI=0x0000000000000037 R8 =0x0000000000000004, R9 =0x00000000bae342f8, R10=0x00000000c003c4c0, R11=0x0000000000005b31 R12=0x0000000000000000, R13=0x00007f97b4b470c8, R14=0x00007f97b4b471d0, R15=0x00007f97fc003000 RIP=0x00007f984283565a, EFLAGS=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004 TRAPNO=0x000000000000000e
Top of Stack: (sp=0x00007f97b4b47010) 0x00007f97b4b47010: 00007f970000002c 00000000bae342a0 0x00007f97b4b47020: 00007f984262321c 00007f9800000000 0x00007f97b4b47030: 00000000bea152d0 00000000bae34258 0x00007f97b4b47040: 00000000c003c4a8 00000000c83bcd68 0x00007f97b4b47050: 00000000c65c4fe0 00007f984262321c 0x00007f97b4b47060: 00000000c7c30878 00000000bea15260 0x00007f97b4b47070: 0000000000000000 00007f98427000ec 0x00007f97b4b47080: 0000000000000001 00007f98425f60dc 0x00007f97b4b47090: 00007f97b4b47090 00000000f2c09a58
jmap histo一下。
carsh了 自然不能jmap
现在有结果了吗?早上线上机器炸了,也是报这个
找出来问题了吗 我也出现了 哈哈 机器直接carsh 了
看起来是JVM的问题,升级到新的JDK版本试试看?
我也出这个问题了,就是一个对象赋值了''内容,结果服务就蹦了
Stack: [0x00007f5f2c7f7000,0x00007f5f2c8f8000], sp=0x00007f5f2c8f5d70, free space=1019k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) J 13465 C2 com.alibaba.fastjson.serializer.SerializeWriter.writeFieldValueStringWithDoubleQuoteCheck(CLjava/lang/String;Ljava/lang/String;)V (1717 bytes) @ 0x00007f63332856c1 [0x00007f6333285640+0x81] J 13015 C2 com.alibaba.fastjson.serializer.ASMSerializer_3_Feed4Show.writeDirectNonContext(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V (1586 bytes) @ 0x00007f63331f5cac [ 0x00007f63331f3b60+0x214c] J 13277 C2 com.alibaba.fastjson.serializer.ASMSerializer_3_Feed4Show.write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V (1682 bytes) @ 0x00007f6332d27b88 [0x00007f6332d274 60+0x728] J 12601 C2 com.alibaba.fastjson.serializer.ASMSerializer_1_PageData.writeDirectNonContext(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V (381 bytes) @ 0x00007f6331e591f4 [0x 00007f6331e587e0+0xa14] J 13103 C2 com.alibaba.fastjson.serializer.ASMSerializer_1_PageData.write(Lcom/alibaba/fastjson/serializer/JSONSerializer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V (469 bytes) @ 0x00007f63316f3f30 [0x00007f63316f3ec0 +0x70]
@judykula ,你说的对象赋了'',啥意思?我这也出现了这个错误,但复现不了
1.2.73 也出现这个问题了。 我看源码时是取value的length时候空指针了;但是这个对象上面判断过空了。 很神奇。。。。。
关掉@asm就可以了
提示信息很明确:try ulimit -c unlimited
这个提示是解决coredump文件生成不出来的吧