[foreign-jextract] [Rev 02] RFR: Improve jextract error reporting
Athijegannathan Sundararajan
sundar at openjdk.java.net
Thu Mar 26 10:23:19 UTC 2020
On Thu, 26 Mar 2020 10:19:54 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> Hi,
>>
>> I spent the last couple of days tracking down a crash I was seeing sometimes when running jextract. In the process I
>> ended up doing several improvements to jextract's error checking and reporting, that I think are useful to keep in the
>> long run. The changes include:
>> - Using `clang_parseTranslationUnit2` to parse, since that returns an error code, instead of a null translation unit.
>> This also means we can still process diagnostic for the returned translation unit (now returned in a buffer).
>> - Checking the return codes for `clang_parseTranslationUnit2`, `clang_saveTranslationUnit`, and
>> `clang_reparseTranslationUnit` (using a proper enum) and throwing an exception in case they are erroneous.
>> - Catching BadMacroException instead of Throwable in the macro parser. We only care about the former, and catching
>> Throwable could lead to too many exceptions being eaten. Technically, if there is an unknown exception, we could just
>> skip the macro, but this isn't always the right strategy. For example, when re-parsing fails the used translation unit
>> becomes invalid, so we really need to do something else than just skipping the macro in that case (to be addressed in
>> another patch https://bugs.openjdk.java.net/browse/JDK-8240614). Imo it's better to just crash than to skip when we
>> encounter an unknwon exception, so that we're more likely to find issues. Enabling libclang crash recovery by default.
>> By default the crash recovery was being disabled. This leads to the process exiting with OS exception code. If we
>> enable this however, it will instead try to return an error code from the libclang call, which we can then check for
>> and handle the failure however we want.
>>
>> Thanks,
>> Jorn
>
> Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
>
> Change crash recovery debug message to print enabled/disabled
Looks good!
-------------
Marked as reviewed by sundar (Committer).
PR: https://git.openjdk.java.net/panama-foreign/pull/40
More information about the panama-dev
mailing list