Abend U4091 Reason 00000006含义解析及程序shutdown异常咨询
Abend U4091 Reason 00000006 解析与处理疑问
问题背景
- 已查阅IBM文档,得知该错误表示应用程序的恢复请求未被Language Environment(LE)条件管理器接受,原因是LE不接受带有异常(如abend)的恢复请求,但不理解**恢复请求(resumption request)**的定义。
- 程序在shutdown阶段触发该abend,其他环节均正常关闭,推测为LE组件报错,异常时活跃模块为
CELQLIB。
作业输出
+CEE3797I LANGUAGE ENVIRONMENT HAS DYNAMICALLY CREATED A DUMP. IEA995I SYMPTOM DUMP OUTPUT 651 USER COMPLETION CODE=4091 REASON CODE=00000006 TIME=04.06.18 SEQ=00110 CPU=0000 ASID=0022 PSW AT TIME OF ERROR 078D1401 B45AECCA ILC 2 INTC 0D ACTIVE MODULE ADDRESS=00000000_340F1000 OFFSET=004BDCCA NAME=CELQLIB DATA AT PSW 345AECC4 - 00181610 0A0DEBEC 4A4C0096 GR 0: 00000000_84000000 1: 00000000_84000FFB 2: 00000000_00000006 3: 00000050_00103E28 4: 00000050_423FD3A0 5: 00000000_345AECD8 6: 00000050_423FDEA8 7: 00000050_423FE0D8 8: 00000000_00000000 9: 00000000_00000001 A: 00000050_423FE39F B: 00000000_345AEDD4 C: 00000050_425FEC60 D: 00000050_423FEC60 E: 00000000_345AE9F2 F: 00000000_00000006 END OF SYMPTOM DUMP BPXP018I THREAD 3475800000000008, IN PROCESS 83886429, ENDED 652 WITHOUT BEING UNDUBBED WITH COMPLETION CODE 84000FFB , AND REASON CODE 00000006.
IPCS回溯信息(执行VERBX LEDATA 'CEEDUMP')
Traceback: DSA Entry E Offset Statement Load Mod Program Unit Service Status 1 CEEOSIGG +00002D6A CELQLIB CEEOSIGG HLE77D0 Call 2 CELQHROD +00000266 CELQLIB CELQHROD HLE77D0 Call 3 MainProcess +00000000 CSQBLB16 4 CSQBMCSY +00000C9C CSQBLB16 5 CELQPCMM +00000F68 CELQLIB CELQPCMM HLE77D0 Call
核心疑问
回溯中未出现自定义代码,是否无需处理该异常?
解答
1. 恢复请求(Resumption Request)的定义
LE的条件管理器负责处理程序运行中的异常事件。恢复请求是指程序在触发异常(如abend、信号)后,尝试跳过异常点、恢复正常执行流程的请求。LE仅允许在特定场景下恢复执行——比如处理可恢复的错误(如数据校验错),但如果异常本身是不可恢复的abend,LE会拒绝这类恢复请求,因为此时程序状态已不可靠,强行恢复可能导致更严重的问题。
2. U4091-06的触发逻辑
结合你的场景和回溯信息:
- 异常发生在
CELQLIB模块中,该模块是LE的核心组件,负责信号处理和异常恢复。 - 回溯链显示调用路径为
CELQPCMM→CSQBMCSY→MainProcess→CELQHROD→CEEOSIGG,其中CEEOSIGG是LE的信号处理入口,说明shutdown阶段某个线程触发了信号,LE尝试处理时发现恢复请求不符合规则,因此抛出U4091-06。
3. 是否需要处理该异常?
从你的描述来看:
- 程序所有业务环节已正常关闭,仅在shutdown收尾阶段触发该abend。
- 回溯中无自定义代码,说明异常完全由LE内部逻辑触发,与业务代码无关。
这种情况下,通常无需额外处理:
- 该abend是LE在清理资源时的“收尾异常”,不会影响业务数据完整性或系统稳定性。
- 若要彻底消除该abend,可检查shutdown流程是否存在非规范的线程终止方式(比如强制kill线程),但考虑到业务已正常关闭,投入成本可能大于收益。
如果后续出现业务异常或资源泄漏,再结合dump深入排查即可。
内容的提问来源于stack exchange,提问作者Morag Hughson
相关产品推荐
相关产品推荐

