Issues with C++ exception handling in an FDW

From: "Soules, Craig" <craig(dot)soules(at)hp(dot)com>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Issues with C++ exception handling in an FDW
Date: 2012-01-30 23:04:02
Message-ID: 4D00A61DE9C15F4E9A8644D52DFF9A0537907F39@G4W3296.americas.hpqcorp.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

I've run into a very odd issue calling C++ code that uses exceptions from within our PostgreSQL FDW. Specifically, we have broken our FDW into two components, a C layer that looks quite similar to the FDW for text files and a C++ layer that is called into by the C layer to interface with our storage file format.

We compile these two components into separate shared libraries, thus we have:

c-fdw.so
c++-fdw.so

and the c-fdw.so is compiled using -Wl,-rpath to allow it to find the c++-fdw.so at load time.

When there are no errors everything works flawlessly, however, we noticed that even throwing an exception in the C++ layer was causing an immediate segmentation fault. Even when encapsulated in a try { } catch(...) { } block.

If anyone has seen anything like this, any pointers or suggestions would be much appreciated. I have followed all of the recommendations in the PostgreSQL documentation, with no luck. I am not overloading the _init() functions in either shared library (another potential source of errors I have read about).

Thanks!
Craig Soules

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2012-01-30 23:35:53 Re: Group commit, revised
Previous Message Adrian Klaver 2012-01-30 22:20:24 Re: pg_dump -s dumps data?!