Oliver Deakin wrote:
Hi all,
I was taking a look at HARMONY-4006 and thought I'd try creating a
simple launcher as a test. I updated my federated build checkout and
rebuilt everything, giving me the usual hdk structure under the target
directory (drlvm+classlib). I can successfully use the Harmony launcher
to run simple classes (i.e. HelloWorld) but when I try to run HelloWorld
using my own launcher I get the following message:
EM: Can't read configuration from './client.emconf'
and an assertion pop-up window appears giving me the following information:
Debug Assertion Failed!
Program: C:\harmony\temp\jnitest\simpleLaunchFederated.exe
File: dbgheap.c
Line: 1132
Expression: _CrtIsValidHeapPointer(pUserData)
The stack trace windbg shows me at the point of assertion is:
ntdll!DbgBreakPoint
ntdll!RtlpBreakPointHeap+0x28
ntdll!RtlpValidateHeapEntry+0x113
ntdll!RtlValidateHeap+0xe0
kernel32!HeapValidate+0x14
em!_CrtIsValidHeapPointer+0xa4
[f:\vs70builds\3077\vc\crtbld\crt\src\dbgheap.c @ 1807]
em!_free_dbg_lk+0x102 [f:\vs70builds\3077\vc\crtbld\crt\src\dbgheap.c @
1132]
em!_free_dbg+0x41 [f:\vs70builds\3077\vc\crtbld\crt\src\dbgheap.c @ 1070]
em!operator delete+0xaa
[f:\vs70builds\3077\vc\crtbld\crt\src\dbgdel.cpp @ 54]
em!std::allocator<char>::deallocate+0x17 [c:\program files\microsoft
visual studio .net 2003\vc7\include\xmemory @ 132]
em!std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::_Tidy+0x66 [c:\program files\microsoft visual studio .net
2003\vc7\include\xstring @ 1519]
em!std::basic_string<char,std::char_traits<char>,std::allocator<char>
>::~basic_string<char,std::char_traits<char>,std::allocator<char>
>+0x1a [c:\program files\microsoft visual studio .net
2003\vc7\include\xstring @ 458]
em!LogParams::~LogParams+0x44
[c:\harmony\svn-checkouts\federated\working_vm\vm\port\include\logparams.h
@ 54]
em!readFile+0x54b
[c:\harmony\svn-checkouts\federated\working_vm\vm\em\src\drlemimpl.cpp @
332]
em!DrlEMImpl::readConfiguration+0x366
[c:\harmony\svn-checkouts\federated\working_vm\vm\em\src\drlemimpl.cpp @
355]
em!DrlEMImpl::init+0x48
[c:\harmony\svn-checkouts\federated\working_vm\vm\em\src\drlemimpl.cpp @
364]
em!DrlEMFactory::createAndInitEMInstance+0xa9
[c:\harmony\svn-checkouts\federated\working_vm\vm\em\src\drlemimpl.cpp @
55]
em!CreateInstance+0x3c
[c:\harmony\svn-checkouts\federated\working_vm\vm\em\src\em_intf.cpp @ 132]
harmonyvm!CmCreateInstance+0xac
[c:\harmony\svn-checkouts\federated\working_vm\vm\vmstart\src\compmgr\component_manager_impl.cpp
@ 584]
harmonyvm!process_properties_dlls+0x1bd
[c:\harmony\svn-checkouts\federated\working_vm\vm\vmcore\src\init\vm_init.cpp
@ 135]
I can successfully use exactly the same launcher to create the RI and J9
VMs and run simple classes, so was surprised to hit this problem with
the Harmony vm. Am I missing something?
This stack trace looks similar to stack in HARMONY-3772. There is a
patch there which changes localized logging output to plain and solves
the problem with log4cxx destructors in this way. The main problem
however is that EM cannot find client.emconf file and tries to print an
error message.
--
Gregory