The program segfaults on movaps instruction at 0x4432eb54, I believe because of alignment requirements. Is it stack setup fault or GCC? GCC 3.4.2 on Linux RedHat 9. Fixed in newer GLIBC? I also see this http://gcc.gnu.org/ml/gcc/2004-09/msg00905.html (gdb) disassemble 0x4432eb20 0x4432eb60 Dump of assembler code from 0x4432eb20 to 0x4432eb60: 0x4432eb20 <apiG729Decode+5553>: mov DWORD PTR [ebp-2872],0x0 0x4432eb2a <apiG729Decode+5563>: mov DWORD PTR [ebp-2920],0x0 0x4432eb34 <apiG729Decode+5573>: lea ecx,[edi+956] 0x4432eb3a <apiG729Decode+5579>: mov DWORD PTR [ebp-2952],ecx 0x4432eb40 <apiG729Decode+5585>: lea esi,[edi+2824] 0x4432eb46 <apiG729Decode+5591>: mov DWORD PTR [ebp-2956],esi 0x4432eb4c <apiG729Decode+5597>: movss xmm0,ds:0x4436cb50 0x4432eb54 <apiG729Decode+5605>: movaps DWORD PTR [ebp-2984],xmm0 0x4432eb5b <apiG729Decode+5612>: mov eax,0x1e End of assembler dump. (gdb) set disassembly-flavor att (gdb) disassemble 0x4432eb20 0x4432eb60 Dump of assembler code from 0x4432eb20 to 0x4432eb60: 0x4432eb20 <apiG729Decode+5553>: movl $0x0,0xfffff4c8(%ebp) 0x4432eb2a <apiG729Decode+5563>: movl $0x0,0xfffff498(%ebp) 0x4432eb34 <apiG729Decode+5573>: lea 0x3bc(%edi),%ecx 0x4432eb3a <apiG729Decode+5579>: mov %ecx,0xfffff478(%ebp) 0x4432eb40 <apiG729Decode+5585>: lea 0xb08(%edi),%esi 0x4432eb46 <apiG729Decode+5591>: mov %esi,0xfffff474(%ebp) 0x4432eb4c <apiG729Decode+5597>: movss 0x4436cb50,%xmm0 0x4432eb54 <apiG729Decode+5605>: movaps %xmm0,0xfffff458(%ebp) 0x4432eb5b <apiG729Decode+5612>: mov $0x1e,%eax End of assembler dump. (gdb) info registers eax 0x1e 30 ecx 0x816e720 135718688 edx 0x0 0 ebx 0x44574d78 1146572152 esp 0x44574bc8 0x44574bc8 ebp 0x445757b0 0x445757b0 esi 0x816ee6c 135720556 edi 0x816e364 135717732 eip 0x4432eb54 0x4432eb54 ... (gdb) si Program received signal SIGSEGV, Segmentation fault. ... 556 for (NSbfr = 0,nsubfr=0; NSbfr < FRM_LEN; NSbfr += SUBFR_LEN,nsubfr++) { arkadi.