У меня есть следующая программа, которая (я думаю) выделяет кучу виртуальной памяти (изменяя разрыв системы с помощью sys_brk), а затем пытается выполнить запись во вновь выделенную память. Тем не менее, я получаю SIGSEGV (при первой записи в память, и я не понимаю, почему).
[OP@localhost sys_brk]$ cat out_of_memory.s
.section .text
.globl _start
_start:
mov $12, %rax
mov $0x1000000, %rdi
syscall
# i: index of memory we are writing to (%rax)
mov $0x403000, %rax
evil_loop_start:
cmp $0x1000000, %rax
jge evil_loop_end
mov %rax, (%rax)
add 0x8, %rax
jmp evil_loop_start
evil_loop_end:
hlt