I'm afraid I can't reproduce the segfault. I tried extending your example to:
>>source free
IDENTIFICATION DIVISION.
PROGRAM-ID. prog.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT file002 ASSIGN "blah.txt"
FILE STATUS IS file002-status.
DATA DIVISION.
FILE SECTION.
FD file002.
01 file002-rec PIC X.
WORKING-STORAGE SECTION.
01 zz-errfile PIC X(30).
01 file002-status PIC XX.
01 zz-error PIC 99.
01 zz-errmessage PIC X(100).
PROCEDURE DIVISION.
DECLARATIVES.
FILE002-HANDLER SECTION.
USE AFTER STANDARD ERROR PROCEDURE ON FILE002.
FILE002-ERROR.
MOVE "FILE002" TO ZZ-ERRFILE.
MOVE FILE002-STATUS TO ZZ-ERROR.
CALL "ERROR-MESSAGE" USING ZZ-ERRFILE, ZZ-ERROR, ZZ-ERRMESSAGE.
EVALUATE ZZ-ERROR
WHEN 35 PERFORM
OPEN OUTPUT FILE002
CLOSE FILE002
OPEN I-O FILE002
END-PERFORM
END-EVALUATE
.
END DECLARATIVES.
display "hello, world!"
open input file002
close file002
.
END PROGRAM prog.