| The following call is access violating from the MCC director:
mcccode = MCC_MIR_DEL_INSTANCE( &instance_rid,
p_entity,
MCC_K_NULL_PTR,
&instance_key,
MCC_K_NULL_PTR);
However, the instance is deleted because we can create it afterwards.
What is puzzling is that this same call (same code) of "MCC_MIR_DEL_INSTANCE"
works when called from a program linking with callable MCC.
Any clues ?
Phil
This is a sample debugger session:
MCC> create server p1 image=p1.exe
%DEBUG-I-DYNIMGSET, setting image MCC_TP_AM
%DEBUG-I-DYNMODSET, setting module MCC_TP_AM_INITIALIZATION
DBG> g
Routine <mcc_tp_am__create>
%DEBUG-I-DYNMODSET, setting module MCC_TP_AM_SVC_ENTRY
DBG> g
server p1
AT 23-AUG-1990 12:10:02
Server instance was successfully created in the management database
MCC> delete server p1
Routine <mcc_tp_am__delete>
DBG> g
%SYSTEM-F-ACCVIO, access violation, reason mask=04, virtual address=7FE75400, PC
=00053262, PSL=0BC00004
%DEBUG-E-LASTCHANCE, stack exception handlers lost, re-initializing stack
%DEBUG-I-EXITSTATUS, is '%NONAME-W-NORMAL, normal successful completion'
DBG> exit
|
|
Here are my thoughts and observations:
Stack overflow problems are of two types:
1) mcc_thread_create will create a thread with a limited stack
size (default = 64 pages) plus a few guard pages.
The default value may be controlled
by defining the logical mcc_thread_stack_size to <num-pages>
The thread stack is allocated from p0 heap
2) The main thread uses the vms controlled stack in p1 space.
This stack may from until the program exceeds its virtual address space.
Case 1 is far more frequent than case 2.
%SYSTEM-F-ACCVIO, access violation, reason mask=04, virtual address=7FE75400, PC
=00053262, PSL=0BC00004
%DEBUG-E-LASTCHANCE, stack exception handlers lost, re-initializing stack
%DEBUG-I-EXITSTATUS, is '%NONAME-W-NORMAL, normal successful completion'
The pc of 53262 is not likely to be within the kernel/mir code.
Of central interest in debugging this problem is
what is the macro instruction at 53262?
and the relevent register values?
What image is mapped to this virtual address region?
The va is within p1 space not p0 space. Thus the problem is NOT a
case 1 stack overflow problem.
PSL with bit-2 set => write/modify operation on 7fe75400
What's illegal about this va?
Generally the last chance handler is invoked when the
user stack is corrupted. Symptom could also occur if
some code clobbered a stack frame and later signalled a condition.
It's to use that four letter word -/debug
Pete
|