On Jul 17, 9:58 am, Mercury <[email protected]> wrote:
> and I found that it called to dvmAbort and my board automatically
> reboot. With my debug, thread status in above function is
> THREAD_RUNNING so it goes to if block and call dvmAbort.
Change dvmAbort() to just call abort(). That should cause the process
to receive a SIGABRT and stop. dvmAbort() stores a value in an
invalid address in an attempt to convince debuggerd to show the right
stack trace on ARM, but apparently it's causing your board to reboot.
> I do not why it goes to if block and cause dvmAbort call. If it does
> not call dvmAbort() does Dalvik terminates successfully? What is
> condition for Dalvik VM terminates successfully when call System.exit
> ().
System.exit() is expected to make the entire process exit. It sounds
like exit() on your system is just causing the thread to exit. On
Linux, the exit() library call turns into the exit_group() system call
("man 2 exit_group" for details), which terminates all threads in the
process.
It's also possible that the vxworks exit() is "polite" and is running
all of the pthread key destruction functions before killing the
process. In that case you should probably just make threadExitCheck()
a no-op for now. (It's only there to check for people who create a
thread, attach it to the VM, and then let the thread exit without
detaching it first, which leaks resources.)
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---