Thread overview
Exceptions don't work in FreeBSD port of gdc
Jun 21, 2008
Dmitry Marakasov
Jun 25, 2008
Nicolay Korslund
Jul 04, 2008
Witold Baryluk
June 21, 2008
Exceptions don't work in FreeBSD port of gdc, throw leads straight to abort():

% gdc --version
gdc (GCC) 4.1.3 20071105 (prerelease   (gdc 0.24, using dmd 1.020))
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

% cat test.d import std.stdio;

void main() {
        try  {
                throw new Exception("test");
        } catch (Exception e) {
        }
}
% gdc test.d
% ./a.out
[1]    98829 abort      ./a.out

I'm not very familiar with D and gdc, so I don't have an idea what may be the cause. There's nothing related to exceptions in the port as well. So how do I enable them?
Please feel free to ask for any additional info.
June 25, 2008
I'm having this problem with OpenMW. Dmitry and myself are currently working together to port openmw to FreeBSD, but it's a bit fragile if exceptions don't work.

Can anyone confirm that this does or doesn't happen on FreeBSD? Is there any reason why gdc's exceptions shouldn't work on other unix systems? (How do they work really?)

I just want to know if we are doing something obviously wrong, before filing a bug report.

Nico

Dmitry Marakasov Wrote:

> % cat test.d import std.stdio;
> 
> void main() {
>         try  {
>                 throw new Exception("test");
>         } catch (Exception e) {
>         }
> }
> % gdc test.d
> % ./a.out
> [1]    98829 abort      ./a.out

July 04, 2008
Dnia 2008-06-25, śro o godzinie 11:26 -0400, Nicolay Korslund pisze:
> > import std.stdio;
> > 
> > void main() {
> >         try  {
> >                 throw new Exception("test");
> >         } catch (Exception e) {
> >         }
> > }

$ gdc t.d
$ ./a.out
Abort trap: 6 (core dumped)
$

:(