harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ilya Berezhniuk (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-5656) [drlvm][port][signals] VM does not show assertion dialog on failed asserts
Date Fri, 28 Mar 2008 00:54:24 GMT

     [ 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"
> The only case when assertion is displayed in a dialog is when crash handler is not initialized
> 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.

View raw message