| T.R | Title | User | Personal Name
 | Date | Lines | 
|---|
| 268.1 |  | HELIX::MIANO | My parents think I'm in college | Mon Jan 27 1997 13:34 | 11 | 
|  | >    	Memory Management Exception/g
>    	to escape to monitor
>    	cause -> Instruction Fetch
    
    Nothing comes between "Memory Management Exception" and 
    "cause -> Instruction Fetch." Some other program must be sending that
    other stuff to the console. I can't find the string "to escape to
    monitor" anywhere in the operating system. Are you sure it's not one of
    your application's messages?
    
    M
 | 
| 268.2 | I'll double check... | ADISSW::FERRARA |  | Mon Jan 27 1997 14:01 | 6 | 
|  |     
    
    The exception message was relayed from our customer...I'll 
    double check with them...
    
    -Bob
 | 
| 268.3 | Sources of Memory Management Exceptions? | ADISSW::FERRARA |  | Tue Jan 28 1997 07:17 | 10 | 
|  |     
    BTW, what are the sources of a Memory Management Exception?
    
    Is this a complete list?
    
    	- Non-existent memory access
    	- ECC/Parity Error (hardware generated) for both main memory
    	  and backup cache
    
    
 | 
| 268.4 |  | HELIX::MIANO | My parents think I'm in college | Tue Jan 28 1997 13:04 | 28 | 
|  |     You get the "Memory Management Exception" message when any of the
    following faults occur:
    
    	Access Control Violation fault (vector 0x080)
    	Translation Not Valid fault (vector 0x090)
    	Fault on Read fault (vector 0x0a0)
    	Fault on Write fault (vector 0x0b0)
    	Fault on Execute fault (vector 0x0c0)
    
    All these faults come in as a System Entry MM Fault (entMM).  For
    whatever reason, we don't print out the actual vector. We just print
    the value of a0 which is the "cause" code. One of the following
    messages gets printed after the "cause ->" string"
    
    	Instruction Fetch 
    	Memory Store
    	Memory Load
    	
    This tells you whether the MM fault was caused by an instruction fetch,
    a store instruction or a load instruction.
    
    Other primary messages are possible besides "Memory Management
    Exception."
    
    For full details, get a copy of the Alpha Architecture Reference
    Manual. It's all in there.
    
    M
 | 
| 268.5 | More info...and questions | ADISSW::FERRARA |  | Tue Jan 28 1997 17:05 | 31 | 
|  |     
    
    More info...
    
    A more complete Customer screen dump is:
    
    	Memory Management Exception/g
    	to escape to monitor
    	cause -> Instruction Fetch
    
    		Fault VA = 0
    		Exception PC = 0
    		Stack Frame Pointer = fffffc000168a500
    		Stack Pointer = fffffc000168a608
    
    
    
    
    Questions:
    1) I was able to remotely log into the CPU that generated this
       exception.  The "sysNvrRead" to dump the error log (its been
       enabled) showed nothing as far as Memory controller errors.
       Is this expected?
    
    2) Does the Faulting VA and Exception PC accurately indicate an
       address of 0?
    
       Would this, then, point to a software problem that initiates the
       exception?
    
    -BobF
 | 
| 268.6 |  | RICKS::THULIN |  | Wed Jan 29 1997 09:52 | 8 | 
|  | re .-1
	Ye, the fault va, and pc of zero would tend to indicate that
somebody jumped to location zero.  Location zero on the AXPvme running
VxWorks is not a mapped location, also it is virtual location not a KSEG
address, so any access to it will cause a memory  management fault.
As for the "escape to monitor" text, I can't explain that, never having seen
it before.
 | 
| 268.7 | How do you track it down? | ADISSW::FERRARA |  | Wed Jan 29 1997 15:56 | 11 | 
|  |     
    How's does one track down this "jumping to location zero"??
    
    It has only occurred a few times at the customer site, never in
    our lab.
    
    Is there a way to log or capture a trace of routine calls or
    instruction sequence leading to the jump to location Zero?
    
    Any help/suggestions would be helpful,
    BobF
 | 
| 268.8 |  | HELIX::MIANO | My parents think I'm in college | Wed Jan 29 1997 17:43 | 3 | 
|  |     You might check for stack problems. Trying to execute at address 0 (or
    any weird address) is probably a sign that memory is being corrupted.
    Ask them to do a checkstack() the next time it happens.
 |