SigSegV during stack unwind (AIX)


 
Thread Tools Search this Thread
Top Forums Programming SigSegV during stack unwind (AIX)
# 1  
Old 09-07-2008
SigSegV during stack unwind (AIX)

Hi
I am getting a strange segmentation fault during the unwind
process. I am trying to throw an object of an Exception class.
During the DoThrow (in libC.a) the stack starts growing until a
Signal is received.
The object thrown is of a class that inherits from a common class,
and the signal only appears rarely - but consistently when it does appear.

I am useing xlC V8 on Aix 5.3 . Dod anyone experience/heard of something like this ? Could it be a copiler problem ?

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Kernel Stack vs User Mode Stack

Hi, I am new to the linux kernel development area. I want to know what is the difference between kernel mode stack and user mode stack? Does each process has a user mode stack and a kernel mode stack?? Or Each process has a user mode stack and there is only one kernel mode stack that is shared by... (4 Replies)
Discussion started by: saurabhkoar
4 Replies

2. Programming

SIGSEGV when allocate a certain size

The problem: I need to work with large arrays and after one of my structures grew in size my program started getting segmentation fault. My code where I allocate the arrays: static R1 *tarr; static R2 *rarr; proc_init_mem() { const int t_sz = sizeof(R1) *... (9 Replies)
Discussion started by: migurus
9 Replies

3. UNIX for Advanced & Expert Users

How to create SIGSEGV at particular memory?

Hi I want to create a SIGSEGV when program tries to access one particular area in memory. Is this possible. If so whats the command. (4 Replies)
Discussion started by: jionnet
4 Replies

4. Solaris

sigsegv Fault

I receive a sigsegv failure. I was under the impression that a core file is created everytime a sigsegv occurrs and the process is terminated. I have had two recent occurrances of a core file not being created. Does anyone know why a core file would not be created. (2 Replies)
Discussion started by: amp4cats
2 Replies

5. AIX

Received signal #11, SIGSEGV [default] on AIX 6.1

Hello, One of our customer is getting segmentation fault when he runs his shell script which invokes our executable on AIX 6.1. On AIX 5.3, there were no issues. Here is the truss output. 811242: __loadx(0x0A040000, 0xF0D3A26C, 0x00000000, 0x00000009, 0x00000000) = 0xF026E884... (0 Replies)
Discussion started by: erra_krishna
0 Replies

6. UNIX and Linux Applications

SIGSEGV Signal handling

Hello, Can anybody tell me how can i handle segmentation fault signal, in C code? (2 Replies)
Discussion started by: mustus
2 Replies

7. Programming

SIGSEGV, Segmentation fault

Here is my initiating code: #define NUM 20 static struct tab { int count; int use; } tab; int curtab = 0; int tab_create(int tab_count) { curtab++; tab.use = 1; tab.count = tab_count; kprintf("here!"); return curtab; } (2 Replies)
Discussion started by: micmac700
2 Replies

8. Programming

SIGSEGV problem

Hi. Can someone to help me in a segfault problem? I have a big C++ program that crash from time to time because it receive the SIGSEGV signal. So my question is: Can I find, without using gdb or other debugging tools, which line from source code cause that problem? Or if exist some gdb API... (1 Reply)
Discussion started by: vaidac_coder
1 Replies
Login or Register to Ask a Question
uwx(3X) 																   uwx(3X)

NAME
uwx() - Unwind Express Library SYNOPSIS
[flag... ] file... [library] ... DESCRIPTION
The Unwind Express Library is a lightweight library for unwinding a process stack on Integrity systems. It may be used for "self-unwind- ing," where a thread traces back through its own stack, or for "cross-unwinding," where a debugger or other tool can examine the stack of another target thread or process. To use the Unwind Express Library, link your application with the option on the compiler or linker command line. All source code should include the header file Source code that uses the library for self-unwinding should also include the header file The Unwind Express Library maintains its entire state within a single unwind environment structure. To unwind a stack, the client applica- tion provides an initial context to the unwind environment, then unwinds the stack one frame at a time. After reaching the bottom of the stack, the unwind environment may be reused for a subsequent unwind operation simply by providing a new initial context, or it may be dis- carded, freeing the memory it was using. A client application may create any number of separate unwind environments, and each one will operate independently of and completely unaf- fected by the others. The Unwind Express Library consists of a core unwind engine that can be adapted to specific environments through the use of callback rou- tines. For self-unwinding, a set of standard callback routines are provided as part of the library. For cross-unwinding, the client must supply callback routines to interface the unwind engine to the target thread or process. Self-Unwinding To prepare for self-unwinding, a client application must perform the following steps to create and initialize a new unwind environment: 1. Call to create a new unwind environment. The return value is a pointer to the unwind environment. 2. Call to initialize the standard callback environment. The return value is a pointer to the callback info structure. 3. Call to register the standard callbacks: and The steps above may be performed at any time in advance of performing a stack unwind. The resulting unwind environment can then be used repeatedly. To perform a stack unwind from some point in the application, the client must perform the following steps: 1. Call to provide the current thread's context as a starting point for unwinding. The stack frame for the caller of this function becomes the current frame. 2. Call to step back one frame in the call stack. After each step, the new frame becomes the current frame, and the client may call to obtain values from the reconstructed context for the new frame. This step can be repeated until the process reaches the bottom of the stack or a signal context frame. 3. When a signal context frame is reached, the client may call to provide a new starting point for unwinding based on the context at the point of interruption. The stack frame for the function interrupted by the signal becomes the current frame. Subsequent calls to will proceed from there. Cross-Unwinding To prepare for cross-unwinding, a client application must perform the following steps to create and initialize a new unwind environment: 1. Call to create a new unwind environment. The return value is a pointer to the unwind environment. 2. Call to setup the unwind environment for cross unwinding. This call also allows the client to specify the byte order (little-endian or big-endian) of the target process. 3. Call to register the client-provided callback functions. See uwx_register_callbacks(3X) for information on writing callback routines. The steps above may be performed at any time in advance of performing a stack unwind. The resulting unwind environment can then be used repeatedly. To perform a stack unwind, the client must perform the following steps: 1. Call to provide the basic initial context as a starting point for unwinding. This initial context consists of the values of ip (instruction pointer), sp (stack pointer), bsp (backing store pointer), and cfm (current frame marker). The frame described by these values becomes the current frame. If the unwind engine needs values from additional registers in the target thread's context, it will request them as needed through the callback interface. 2. Call to step back one frame in the call stack. After each step, the new frame becomes the current frame, and the client may call to obtain values from the reconstructed context for the new frame. This step can be repeated until the process reaches the bottom of the stack or a signal context frame. 3. When a signal context frame is reached, the client may call to obtain the abi and context parameters recorded in the unwind descrip- tors for the frame. This routine returns the two values in a single int as ((abi << 8) | context). It should then call again to pro- vide a new starting point for unwinding based on the context at the point of interruption. The stack frame for the function inter- rupted by the signal becomes the current frame. Subsequent calls to will proceed from there. Obtaining Information From the Current Frame's Context Registers from the current frame may be read using and The starting address of the current function may be obtained by calling Symbolic information may be obtained, if available, for the current frame's IP by calling and ERRORS
For the APIs that return pointer values, a NULL pointer indicates a memory allocation error; otherwise a pointer to an opaque object is returned. For other APIs, an integer status code is returned. These codes are listed here. Request successfully completed. hit a signal context frame. hit bottom of stack. The cached information returned by the lookup-ip callback was invalid. The "Lookup IP" callback returned an invalid key in the result vector. The register id is invalid. The unwind information block contains an invalid descriptor. The unwind engine is unable to unwind from the current frame because of an unsupported descriptor. There was an error reading a value from the memory stack. There was an error reading a register from the initial context. There was an error reading a value from the register stack backing store. There was an error reading the unwind information block. There was an error reading the unwind table. No module information was found for the current frame's IP. The "Lookup IP" callback encountered an error. No callback routines have been registered. No initial context has been supplied. The env parameter is NULL. An attempt to allocate additional memory failed. No symbolic information was found. An unwind information block was found, but it does not describe the current frame's IP. No unwind information block was found for the current frame's IP. The unwind information block is invalid -- the nesting of prologue regions is not balanced. An unidentified error was received from the uc_access(3) library. The unwind information block is invalid -- an undefined label is referenced. EXAMPLES
The following code fragment performs a stack unwind in the current thread: LIMITATIONS
The Unwind Express Library currently does not recognize X-format unwind descriptors. These are not currently used by HP compilers. AUTHOR
The Unwind Express Library was developed by Hewlett-Packard. SEE ALSO
uc_access(3), uwx_add_to_bsp(3X), uwx_find_source_info(3X), uwx_find_symbol(3X), uwx_free(3X), uwx_get_abi_context_code(3X), uwx_get_func- start(3X), uwx_get_module_info(3X), uwx_get_nat(3X), uwx_get_reg(3X), uwx_get_source_info(3X), uwx_get_sym_info(3X), uwx_init(3X), uwx_init_context(3X), uwx_register_alloc_cb(3X), uwx_register_callbacks(3X), uwx_release_symbol_cache(3X), uwx_self_do_context_frame(3X), uwx_self_free_info(3X), uwx_self_init_context(3X), uwx_self_init_info(3X), uwx_set_nofr(3X), uwx_set_remote(3X), uwx_step(3X), uwx_step_inline(3X). Integrity Systems Only uwx(3X)