История изменений
Исправление iliyap, (текущая версия) :
Там в конце программы sigwait, в нём и висит. Чтобы можно было в procfs посмотреть мапинги процесса. Не веришь, что висит в sigwait? Закомментируй его, перекомпилируй и перезапусти.
Я запускал на 64-битном x86_64 (64-битное ядро, 32-битный процесс). В этом случае процессу доступны все 4 GiB адресного пространства. Код и данные программы занимают младшие адреса, стек – старшие. Между ними дырка для mmap-а. У меня та дырка заканчивается видимо на 0xb7d0a000 + 0x40000000 = 0xf7d0a000
.
У тебя 32-разрядное ядро и 32-разрядный процесс. Процессу доступны 3 GiB из адресного пространста, верхний 1 GiB зарезервирован для ядра. (Когда процесс входит в ядро сисколлом, ядру нужно иметь доступ одновременно к собственным коду и данным, и к данным процесса, вызвавшего сисколл. Поэтому на 32-битных системах верхний 1 GiB адресного пространства недоступен процессу.)
Поэтому у тебя доступное адресное пространство заканчивается на 0xc0000000
, а mmap-дырка заканчивается на 0x76e2f000 + 0x40000000 = 0xb6e2f000
.
Исходная версия iliyap, :
Там в конце программы sigwait, в нём и висит. Чтобы можно было в procfs посмотреть мапинги процесса. Не веришь, что висит в sigwait? Закомментируй его, перекомпилируй и перезапусти.
Я запускал на 64-битном x64_64 (64-битное ядро, 32-битный процесс). В этом случае процессу доступны все 4 GiB адресного пространства. Код и данные программы занимают младшие адреса, стек – старшие. Между ними дырка для mmap-а. У меня та дырка заканчивается видимо на 0xb7d0a000 + 0x40000000 = 0xf7d0a000
.
У тебя 32-разрядное ядро и 32-разрядный процесс. Процессу доступны 3 GiB из адресного пространста, верхний 1 GiB зарезервирован для ядра. (Когда процесс входит в ядро сисколлом, ядру нужно иметь доступ одновременно к собственным коду и данным, и к данным процесса, вызвавшего сисколл. Поэтому на 32-битных системах верхний 1 GiB адресного пространства недоступен процессу.)
Поэтому у тебя доступное адресное пространство заканчивается на 0xc0000000
, а mmap-дырка заканчивается на 0x76e2f000 + 0x40000000 = 0xb6e2f000
.