lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 18 Jul 2013 18:17:48 -0700
From:	David Daney <ddaney.cavm@...il.com>
To:	Andy Lutomirski <luto@...capital.net>
CC:	linux-kernel@...r.kernel.org, gcc@....gnu.org
Subject: Re: [RFC / musing] Scoped exception handling in Linux userspace?

On 07/18/2013 05:50 PM, Andy Lutomirski wrote:
> On Thu, Jul 18, 2013 at 5:40 PM, David Daney <ddaney.cavm@...il.com> wrote:
>> On 07/18/2013 05:26 PM, Andy Lutomirski wrote:
>>>
>>> Windows has a feature that I've wanted on Linux forever: stack-based
>>> (i.e. scoped) exception handling.  The upshot is that you can do,
>>> roughly, this (pseudocode):
>>>
>>> int callback(...)
>>> {
>>>     /* Called if code_that_may_fault faults.  May return "unwind to
>>> landing pad", "propagate the fault", or "fixup and retry" */
>>> }
>>>
>>> void my_function()
>>> {
>>>     __hideous_try_thing(callback) {
>>>       code_that_may_fault();
>>>     } blahblahblah {
>>>       landing_pad_code();
>>>     }
>>> }
>>
>>
>> How is this different than throwing exceptions from a signal handler?
>
> Two ways.  First, exceptions thrown from a signal handler can't be
> retries.

??

> Second, and more importantly, installing a signal handler in
> a library is a terrible idea.

The signal handler would be installed by main() before calling into the 
library.  You have to have a small amount of boiler plate code to set it 
up, but the libraries wouldn't have to be modified if they were already 
exception safe.

FWIW the libgcj java runtime environment uses this strategy for handling 
NullPointerExceptions and DivideByZeroError(sp?).  Since all that code 
for the most part follows the standard C++ ABIs, it is an example of 
this technique that has been deployed in many environments.

David Daney

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ