Subject: Bug: setjmp() when profiling enabled
To: NetBSD/Alpha <>
From: B. James Phillippe <>
List: port-alpha
Date: 02/18/2002 01:07:23
On the cold day of Feb 16, B. James Phillippe mused:

> Hello,
> I am running 1.5.2 on a DEC Alpha, and have bumped into what I believe is
> an unaligned access in the C library.  At least, I have an application
> which blows up with "unaligned access" only when compiled with "-pg" for
> profiling.  When I run the address through gbd, this is what I get:


I still haven't found a solution, but here is some more information.  It
seems this problem happens whenever setjmp()/longjmp() are used in an
application which has been compiled with "-pg".  Here is a sample program:

 * Compile with: gcc -pg test.c
#include <setjmp.h>

jmp_buf env;

int foo(void)
    int val;

    if ((val = setjmp(env)) != 0) {    /* <------ boom */
        return val;

    longjmp(env, 1);

    return val;

int main(int argc, char *argv[])

    return 0;

The limited testing I'm currently capable of leads me to suspect this is
some kind of stack corruption problem.  The problem happens when __setjmp14
is entered after a _mcount has returned within the same stack frame.  At
that point, the application will get an unaligned access and then segfault.
I'm hoping someone with experience can take a closer look.

# bryan at darkforest dot org
# Software Engineer