首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从线程转储重新创建事务

如何从线程转储重新创建事务
EN

Stack Overflow用户
提问于 2015-01-22 00:50:27
回答 1查看 55关注 0票数 1

我们遇到了一个问题,我们的JVM (Weblogic上的HotSpot)终止时出现了致命错误。

代码语言:javascript
复制
SIGSEGV (0xb) at pc=0xffffffff7a045f1c

我们对致命错误日志(Oracle: Fatal Error Log Troubleshooting)进行了分析和重新分析。错误日志包括在错误发生时运行的线程及其跟踪(下面的前三行读取跟踪)。每次发生致命错误时,跟踪都是相同的。

代码语言:javascript
复制
J  com.bea.wsrp.producer.container.ServletRequestImpl.setHeaders(Ljava/util/Map;Ljava/util/LinkedHashMap;Ljava/lang/String;)V
j  com.bea.wsrp.producer.container.RequestFactory.createServletRequest(Ljavax/servlet/http/HttpServletRequest;Lcom/bea/wsrp/model/markup/IRuntimeContext;Lcom/bea/wsrp/model/markup/IMarkupParams;Lcom/bea/wsrp/producer/handlers/ServiceHandler$InvocationType;)Lcom/bea/wsrp/producer/container/ServletRequestImpl;+213
j  com.bea.wsrp.producer.container.RequestFactory.createServletRequest(Ljavax/servlet/http/HttpServletRequest;Lcom/bea/wsrp/model/markup/IRuntimeContext;Lcom/bea/wsrp/model/markup/IMarkupParams;Lcom/bea/wsrp/model/markup/state/IOpaqueState;Lcom/bea/wsrp/model/markup/INavigationalContext;Lcom/bea/wsrp/producer/handlers/ServiceHandler$InvocationType;)Lcom/bea/wsrp/producer/container/ServletRequestImpl;+5

我的问题是,给定堆栈跟踪和我们的源代码,当我们运行的代码的最后部分大约80行跟踪并且非常通用(意味着许多不同的操作通过它)时,我们如何计算出需要的操作(或者更彻底地测试代码部分)来重新创建这个问题?有没有什么静态代码分析方法可以帮上忙?搜索字节码会有帮助吗?或者我们被卡住了,无法访问供应商的源代码?

试错测试(包括我们的标准性能/功能脚本)无法重新创建问题,甚至无法使用setHeaders方法(上面跟踪的第一行)。

感谢您对解决此问题的新方法的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-01-22 00:53:59

如果你的意思是重新创建相同的线程状态,你不知道它死的时候是什么状态,你可以使用Thread.currentThread().setName(...)

有些人使用它来设置线程名称中的线程状态信息,以便以后的堆栈转储分析可以为您提供一些状态信息,例如,线程名称可以是这样的:

thread [abc] values [tx=1234, state=state1, user=someuser, starttime=123456]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28072566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档