2011年6月2日星期四

  启动java程序报Pid 9899 in trap loop, signal 11,9899 Memory fault(coredump)错误

在新环境中启动UPES程序报:

 
  1: ---------begin to start UPES at 2011年6月3日 星期五, 15:44:23 ----------
  2: 2011-06-03 15:44:24,856 INFO [UPES] - <MQSeries Workflow UPES Version1.0 starting...>
  3: 2011-06-03 15:44:24,858 INFO [UPES] - <----------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!----------------->
  4: 2011-06-03 15:44:24,858 INFO [UPES] - <正在初始化数据库及MQ连接...>
  5: 2011-06-03 15:44:24,986 INFO [UPES] - <  Loading Database Driver: oracle.jdbc.driver.OracleDriver>
  6: 2011-06-03 15:44:25,009 INFO [UPES] - <  Connecting to the Database '@ip地址:1521:oradb1' using UserID 'ccas'>
  7: 2011-06-03 15:44:26,030 INFO [UPES] - <connection =oracle.jdbc.driver.T2CConnection@1c99159>
  8: 2011-06-03 15:44:26,031 INFO [UPES] - <  Connecting to MQSeries Queue Manager 'CCASWFQM'>
  9: 2011-06-03 15:44:26,102 INFO [UPES] - <  Accessing inQueueManager 'CCASWFQM'>
 10: Pid 19617 in trap loop, signal 11
 11: ./startUPES.sh[28]: 19617 Memory fault(coredump)
第10,11行报错。
通过网上查询,signal 11 为 SIGSEGV 即segmentation violation,程序代码试图访问非本进程的内存空间。java程序报此错误大多数情况下是调用native code
时出现。查看UPES源码未发现调用native code的地方,只有使用oracle jdbc驱动的时候使用的oci方式,在此才会调用native code。将oci驱动方式改为thin driver,
重新启动UPES,程序正常启动。
看来是oci驱动的原因或者是当前环境未配置oracle client。
关于此类问题另外的原因说明,可以参考:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4794360

没有评论:

发表评论