| Thread overview | ||||||||
|---|---|---|---|---|---|---|---|---|
|
December 31, 2008 More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
When people say that exception handling doesn't work on LDC in some circumstances, does this mean that if the code uses exceptions it won't work, that you can't catch exceptions or something else? If you just can't catch exceptions, it could still be useful to me for some data mining code that I sometimes write that has huge memory requirements (meaning I need 64-bit) but absolutely no robustness requirements (I pretty much treat all exceptions as unrecoverable because the program will only be run a few times and worrying about these details is a waste of my time.) Would I be able to use LDC on platforms where exception handling isn't supported, with library code that throws exceptions, as long as I didn't care about catching these exceptions? | ||||
January 01, 2009 Re: More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
Posted in reply to dsimcha | dsimcha wrote:
> When people say that exception handling doesn't work on LDC in some
> circumstances, does this mean that if the code uses exceptions it won't work,
> that you can't catch exceptions or something else? If you just can't catch
> exceptions, it could still be useful to me for some data mining code that I
> sometimes write that has huge memory requirements (meaning I need 64-bit) but
> absolutely no robustness requirements (I pretty much treat all exceptions as
> unrecoverable because the program will only be run a few times and worrying
> about these details is a waste of my time.) Would I be able to use LDC on
> platforms where exception handling isn't supported, with library code that
> throws exceptions, as long as I didn't care about catching these exceptions?
Even "uncaught" exceptions get caught by the runtime.
Last I checked on my (x86-64 Linux) machine, this code segfaults in the runtime when compiled with LDC:
-----
void main() {
throw new Exception("test");
}
-----
I'm not sure what the throwing code does if you set rt_trapExceptions to false. It might just terminate the program, so try it and see; add something like the following code to one of your modules:
-----
extern extern (C) bool rt_trapExceptions;
static this() {
rt_trapExceptions = false;
}
-----
(Note: This only works with Tango)
| |||
January 01, 2009 Re: More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
Posted in reply to dsimcha | dsimcha wrote: > When people say that exception handling doesn't work on LDC in some circumstances, does this mean that if the code uses exceptions it won't work, that you can't catch exceptions or something else? That really depends. It could mean that exception handling is buggy (LLVM bug in x86-64) or that something is fundamentally amiss (Windows) and unwinding the stack to the correct catch clause does not work. In the latter case, we make 'throw' print out a message and terminate the program instead. > Would I be able to use LDC on > platforms where exception handling isn't supported, with library code that > throws exceptions, as long as I didn't care about catching these > exceptions? I'd expect so, though it hasn't been tried. | |||
January 01, 2009 Re: More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Christian Kamm | Christian Kamm wrote:
> dsimcha wrote:
>> When people say that exception handling doesn't work on LDC in some
>> circumstances, does this mean that if the code uses exceptions it won't
>> work, that you can't catch exceptions or something else?
>
> That really depends. It could mean that exception handling is buggy (LLVM
> bug in x86-64) or that something is fundamentally amiss (Windows) and
> unwinding the stack to the correct catch clause does not work. In the
> latter case, we make 'throw' print out a message and terminate the program
> instead.
>
>> Would I be able to use LDC on platforms where exception handling isn't supported, with library code that
>> throws exceptions, as long as I didn't care about catching these
>> exceptions?
>
> I'd expect so, though it hasn't been tried.
>
Does that mean that it compiles, at least?
| |||
January 01, 2009 Re: More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Don | Don wrote:
> Christian Kamm wrote:
>> dsimcha wrote:
>>> When people say that exception handling doesn't work on LDC in some circumstances, does this mean that if the code uses exceptions it won't work, that you can't catch exceptions or something else?
>>
>> That really depends. It could mean that exception handling is buggy (LLVM bug in x86-64) or that something is fundamentally amiss (Windows) and unwinding the stack to the correct catch clause does not work. In the latter case, we make 'throw' print out a message and terminate the program instead.
>>
>>> Would I be able to use LDC on
>>> platforms where exception handling isn't supported, with library code
>>> that throws exceptions, as long as I didn't care about catching these
>>> exceptions?
>>
>> I'd expect so, though it hasn't been tried.
>>
> Does that mean that it compiles, at least?
LDC, the runtime, tango-user, code using exception handling - all on x86-32 or x86-64 Linux: yes, they do compile. Did I misunderstand the question?
| |||
January 02, 2009 Re: More LDC Exception Handling Stuff | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Christian Kamm | Christian Kamm wrote:
> Don wrote:
>
>> Christian Kamm wrote:
>>> dsimcha wrote:
>>>> When people say that exception handling doesn't work on LDC in some
>>>> circumstances, does this mean that if the code uses exceptions it won't
>>>> work, that you can't catch exceptions or something else?
>>> That really depends. It could mean that exception handling is buggy (LLVM
>>> bug in x86-64) or that something is fundamentally amiss (Windows) and
>>> unwinding the stack to the correct catch clause does not work. In the
>>> latter case, we make 'throw' print out a message and terminate the
>>> program instead.
>>>
>>>> Would I be able to use LDC on
>>>> platforms where exception handling isn't supported, with library code
>>>> that throws exceptions, as long as I didn't care about catching these
>>>> exceptions?
>>> I'd expect so, though it hasn't been tried.
>>>
>> Does that mean that it compiles, at least?
>
> LDC, the runtime, tango-user, code using exception handling - all on x86-32
> or x86-64 Linux: yes, they do compile. Did I misunderstand the question?
>
That's what I wanted to hear. That's great news.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply