首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Jenkins管道中使用VM实现雅各布dll中的EXCEPTION_ACCESS_VIOLATION

在Jenkins管道中使用VM实现雅各布dll中的EXCEPTION_ACCESS_VIOLATION
EN

Stack Overflow用户
提问于 2020-12-03 11:33:41
回答 1查看 1.1K关注 0票数 2

当在虚拟机中使用时,我们正在经历一个可能与Jacob 1.14.3 dll相关的问题。当在windows服务器VM(主/从)中从jenkins管道运行我们的自动化脚本时,日志中显示了以下错误:

代码语言:javascript
运行
复制
A fatal error has been detected by the Java Runtime Environment:

 EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180012df1, pid=6404, tid=0x00000000000017bc

JRE version: Java(TM) SE Runtime Environment (8.0_271-b09) (build 1.8.0_271-b09)
Java VM: Java HotSpot(TM) 64-Bit Server VM (25.271-b09 mixed mode windows-amd64 compressed oops)
Problematic frame:
C  [jacob-1.14.3-x64.dll+0x12df1]

Core dump written. Default location: c:\jenkins\workspace\PipelineCenarios\Test_Com_Claudio\hs_err_pid6404.mdmp

If you would like to submit a bug report, please visit:
  http://bugreport.java.com/bugreport/crash.jsp
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

[...]log too big to be posted in stack overflow[...]

VM Arguments:
jvm_args: -Dclassworlds.conf=C:\apache-maven-3.6.0\bin\..\bin\m2.conf -Dmaven.home=C:\apache-maven-3.6.0\bin\.. -Dmaven.multiModuleProjectDirectory=c:\jenkins\workspace\PipelineCenarios\Test_Com_Claudio\pos 
java_command: org.codehaus.plexus.classworlds.launcher.Launcher clean test -Demulator.model=S920 -Dlogic.number=790001291 -Ddriver.app=S920POS.exe -Drunner.type= -Demulator.initialization=false -Dcucumber.filter.tag=@TesteComunicacaoMaster -Dextent.reporter.klov.start=false -Dklov.project.name=Tst_comunicacao -Dklov.report.name=S920 -Dextent.reporter.html.config=src/test/resources/extent-config.xml -Dextent.reporter.klov.config=src/test/resources/klov.properties -Dextent.reporter.html.out=target/test-output/HtmlReport/ExtentHtml.html -e -X
java_class_path (initial): C:\apache-maven-3.6.0\bin\..\boot\plexus-classworlds-2.5.2.jar
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_271
JRE_HOME=C:\Program Files\Java\jdk1.8.0_271\jre
PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\apache-maven-3.6.0\bin;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk1.8.0_271\bin;C:\Program Files\Java\jdk1.8.0_271\jre\bin;C:\Users\fafezzi\AppData\Local\Microsoft\WindowsApps;"C:\Program Files\Java\jre1.8.0_271\bin"
USERNAME=fafezzi
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 62 Stepping 4, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 10.0 , 64 bit Build 14393 (10.0.14393.3630)

CPU:total 4 (initial active 4) (1 cores per cpu, 1 threads per core) family 6 model 62 stepping 4, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, erms, tsc, tscinvbit

Memory: 4k page, physical 8191408k(3782304k free), swap 9502128k(5723824k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (25.271-b09) for windows-amd64 JRE (1.8.0_271-b09), built on Sep 16 2020 19:14:59 by "" with MS VC++ 15.9 (VS2017)

time: Wed Dec  2 15:26:51 2020
timezone: E. South America Standard Time
elapsed time: 14.765913 seconds (0d 0h 0m 14s)

Master使用Maven构建项目,并发送要运行的测试是从机器。我们必须使用Jacob将AutoITX与Junit命令集成。

到目前为止,我们一直在检查不同的版本以及以下几个版本之间的集成:

  • 雅各布dll (1.14.3和经审查的分期付款和权限)
  • maven (3.3.9 / 3.6.0 / 3.5.3)
  • 尽职尽责插件(尝试3.0.0-M4和2.22.0)
  • JDK和JRE (与1.8.0_271和1.11一起尝试)
  • AutoITX (经审核的分期付款和权限)

我们还试图改变操作系统语言后,在网上发现了一些关于这种“异常访问性违规”的结果。我们还要求虚拟化团队删除应用的所有强化策略,我们还运行了windows更新并添加了C redist库,以尝试纠正我们面临的DLL问题。我们还隔离了所有代码,以便只有一个只有一个命令的文件( AutoIT使用jacob来自动执行任何操作,甚至鼠标移动),问题仍然存在。在我们的一次尝试中,我们已经运行了一个本地VM,它有一个新的分期付款,而且根本没有jenkins,所以我们现在已经不是问题的原因了。

也是:在团队本地机器中,脚本没有问题地运行,程序被实例化,Maven > Java >> Jacob > AutoITX > Windows之间的通信运行良好。我们无法确定为什么同样的构建和过程不能在我们的管道中工作(VM/Jenkins)。

我们有记录说,同样的管道工作以前,但我们不知道为什么它已经停止工作。

有什么见解或建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 12:21:02

可能解决办法

尝试将您的java版本构建更改为1.8.0_141。

请注意,141在这里很重要。不同版本的版本号可能不兼容并引发类似的错误。

您可以在Java档案馆中找到旧的java版本,并搜索Java开发工具包8u141。

上下文

我们的团队通过java代码调用jacob,发现了同样的问题。在我们的示例中,"hs_pid_xxxx“文件中的错误与上面的完全相同:

  • Variant_getVariantType+0x51
  • 存储器地址180012df1
  • EXCEPTION_ACCESS_VIOLATION

整个团队在网上搜索了几个月,同时还交换了java版本、jacob版本、AutoitX版本,甚至考虑了windows服务器/ windows home不同构建的windows版本。

在我们的尝试中,我们意识到代码只在本地公司的机器上具体运行,因此不可能在任何一个VM甚至我们的个人计算机中运行这个特定的jacob调用。过了一段时间,我们决定尝试使用特定的JAVA,已安装在我们公司的本地设备中。我所说的具体构建不仅仅是使用相同的java版本( Java 8/ Java 11/ Java 15 ),还使用了与java开发工具包8u 141 相同的Java构建,在这个链接中,我们下载了声明141的文件,并且异常消失了,https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html明显地在更新的java版本中引发指向雅各布dll的空指针。

无论如何..。如果有人正经历这个问题,我相信值得一试。

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

https://stackoverflow.com/questions/65125191

复制
相关文章

相似问题

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