Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 14 Oct 2003 13:31:31 -0500 (CDT) | From | Chris Lattner <> | Subject | [x86] Access off the bottom of stack causes a segfault? |
| |
My compiler is generating accesses off the bottom of the stack (address below %esp). Is there some funny kernel interaction that I should be aware of with this? I'm periodically getting segfaults.
Example:
int main() { int test[4000]; ... return 0; }
Generated code: .intel_syntax ... main: mov DWORD PTR [%ESP - 16004], %EBP # Save EBP to stack mov %EBP, %ESP # Set up EBP sub %ESP, 16004 # Finally adjust ESP lea %EAX, DWORD PTR [%EBP - 16000] # Get the address of the array ... mov %EAX, 0 # Setup return value mov %ESP, %EBP # restore ESP mov %EBP, DWORD PTR [%ESP - 16004] # Restore EBP from stack ret
This seems like perfectly valid X86 code (though unconventional), but it is causing segfaults pretty consistently (on the first instruction). Does the linux kernel assume that page faults will be above the stack pointer if the stack needs to be expanded?
Thanks,
-Chris
-- http://llvm.cs.uiuc.edu/ http://www.nondot.org/~sabre/Projects/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |