Custom Query (145 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (16 - 18 of 145)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Ticket Resolution Summary Owner Reporter
#164 fixed Resumption Re-Throw Error After Another Throw ajbeach
Description

This is a slightly modified version of a failing test (see resume.cfa test for the original) that removes some of the current patch syntax. Ignoring that difference this is a test case that is currently failing.

try {
    try {
        printf("throwing first exception\n");
        yin black;
        throwResume &black;
    } catchResume (yin * first) {
        printf("caught first exception\n");
        try {
            printf("throwing second exception\n");
            yang white;
            throwResume &white;
        } catchResume (yang * second) {
            printf("caught second exception\n");
        }
        throwResume;
    }
} catchResume (yin * first) {
    printf("recaught first exception\n");
} catchResume (yang * second) {
    printf("caught second exception (bad location)\n");
}

Expected output:

throwing first exception
caught first exception
throwing second exception
caught second exception 
recaught first exception

The actual output adds "(bad location)" to the second last line.

What appears to be happening is that the internal exception is being thrown from where the re-throw should be thrown, despite the fact that new handler frames have been pushed onto the stack since then.

#165 fixed Exceptions in the Exceptions File ajbeach
Description

I have found one case where the exception system can't handle exceptions. In this case if the resumpution exception function is unwound (because of a termination exception) it will not clean-up the state of the EHM properly because it doesn't run any clean-up code then.

There may be other cases where unwinding across functions in exception.c causes problems. This could be fixed by moving that section to Cforall or by compiling that file with -fexceptions, which may interfere with the assembly we are creating.

See exceptions/interact for a disabled test showed this, expected output is:

throwing resume moon
resumption moon catch, will terminate
termination catch
throwing resume star
resumption star catch
#173 fixed Catch Declaration not Seen by Condition (New AST only) ajbeach
Description

There is a bug where the declaration of a catch clause is not in scope when resolving the condition. This means the condition can't use the exception that has been caught to decide whether or not to handle it. A common use case.

The old AST has a rather messy fix that rewrites the catch statement into an encoded form and then undoing the operation before passing it onto another pass. However this doesn't work for the new AST and a different solution will be needed.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Note: See TracQuery for help on using queries.