C Tips: Generating a Bugcheck; Triggering a System Crash

C Tips: Generating a Bugcheck; Triggering a System Crash
Tagged:  •    •    •    •    •    •  

The following describes how to trigger a bugcheck…

By default, a system bugcheck can only be triggered in executive or kernel mode. Outer-mode bugchecks will trigger application exit, but will only trigger a system crash if the OpenVMS system parameter BUGCHEKFATAL is set to promote non-privileged bugcheck requests into system bugchecks.

In a C application, an OpenVMS Alpha routine that calls the bug_check macro looks like this:

#define __NEW_STARLET
#include <ssdef.h>
#include <starlet.h>
#include <stdlib.h>
#include <vms_macros.h> /* from sys$lib_c.tlb */

int ByeByeBugCheck()
  {
  bug_check( INCONSTATE, FATAL, COLD );
  return SS
    
    
C Tips: Generating a Bugcheck; Triggering a System Crash
Tagged:  •    •    •    •    •    •  

The following describes how to trigger a bugcheck…

By default, a system bugcheck can only be triggered in executive or kernel mode. Outer-mode bugchecks will trigger application exit, but will only trigger a system crash if the OpenVMS system parameter BUGCHEKFATAL is set to promote non-privileged bugcheck requests into system bugchecks.

In a C application, an OpenVMS Alpha routine that calls the bug_check macro looks like this:

___FCKpd___0

The CC compilation command for the above source code module is CC module_name.c + SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY.

CMKRNL privilege is required for the sys$cmkrnl call.

Both OpenVMS Alpha and OpenVMS I64 also support the following construct:
#include <pal_builtins.h>
void __PAL_BUGCHK( bugcheck_code );

This PAL call replaces the bug_check call shown above, and you'll need to add the required include file.

The __PAL_BUGCHK call is an SRM firmware PAL call on OpenVMS Alpha, and translated into a compiler break directive available within the OpenVMS I64 C compiler. 

BUGCHECK; } main() { unsigned int ArghList[] = { 0 }; int RetStat; RetStat = sys$cmkrnl( ByeByeBugCheck, ArghList); exit( EXIT_FAILURE ); }

The CC compilation command for the above source code module is CC module_name.c + SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY.

CMKRNL privilege is required for the sys$cmkrnl call.

Both OpenVMS Alpha and OpenVMS I64 also support the following construct:
#include <pal_builtins.h>
void __PAL_BUGCHK( bugcheck_code );

This PAL call replaces the bug_check call shown above, and you'll need to add the required include file.

The __PAL_BUGCHK call is an SRM firmware PAL call on OpenVMS Alpha, and translated into a compiler break directive available within the OpenVMS I64 C compiler. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值