You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ilya Berezhniuk (JIRA)" <ji...@apache.org> on 2008/03/28 01:54:24 UTC

[jira] Updated: (HARMONY-5656) [drlvm][port][signals] VM does not show assertion dialog on failed asserts

     [ https://issues.apache.org/jira/browse/HARMONY-5656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ilya Berezhniuk updated HARMONY-5656:
-------------------------------------

    Attachment: assert_patch_03_2.patch

After lot of experiments, I've decided to combine both described approaches for Windows.

Now, when assert dialog is disabled, we can process ABORT signal, and even attach to the debugger in hand-made dialog box when VM ABORT callback enables assertion.
When assert dialog is enabled, CH cannot catch SIGABRT, but it shows assert dialog - I've checked this carefully.

I've also re-factored Linux signals processing:
- SIGABRT is now actually processed on Linux.
- GDB attaching was moved into OS signal handler, because GDB shows bad stack trace when attaching from 'c_handler' with transfer stub on the stack.
- Signals processing on Linux was tested again, and assert/abort processing was carefully tested too. This resulted in special processing of GDB attaching in case of SIGABRT - because SIGABRT can't be rethrown by returning to unchanged signal context.


> [drlvm][port][signals] VM does not show assertion dialog on failed asserts
> --------------------------------------------------------------------------
>
>                 Key: HARMONY-5656
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5656
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows
>            Reporter: Ilya Berezhniuk
>         Attachments: assert_patch_03_2.patch
>
>
> When an assertion fired, VM does not show assertion dialog on Windows regardless of "vm.assert_dialog" property.
> The only case when assertion is displayed in a dialog is when crash handler is not initialized yet.
> The problem appears because in current crash handler design all CRT events are set up in crash handler initialization to print comsole message and do not display a dialog.
> The sceme supposed to re-enable CRT event setting in VEH. The problem with assert() is that the signal is caught neither in VEH nor in CRT handler.
> I can see 2 approaches to fix the problem:
> 1) Change CRT settings immediately when crash handler output flags are changed. This method introduces additional platform dependency and thus does not look good for me, but it shoul work stably.
> 2) SIGABRT handler can be registered on Windows, but Unix-like signals handling looks ugly in Windows environment.
> I'm going to try both methods, and provide a patch for working one.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.