Нагуглил массу причин, но не одну не могу подогнать под проблему.
Допустим есть код:
.globl main
.text
main:
addl $4, %esp
Да, esp указзывает не на тот адрес, который указывала до выполнения первой инструкции. Но ведь для каждого процесса регистры независимы? Esp нигде не используется.
Есть предположение, что идёта вызов main, но из main возврата нет и если востановить значение указателя стека, то краха не произойдёт.