0
cat /proc/sys/kernel/shmmax
18446744073692774399
shmem 메모리를 만들려고 시도하고 나중에 거대한 거친 COW 취약점을 덮어 씁니다.IPC SysV 공유 메모리 - shmget(), shmat()가 작동하지 않습니다.
은 어떻게 든 MAXMYMEM의 할당 오류 "메모리를 할당 할 수 없습니다"에러 코드 (12)
가 작동하지 않는 이유를 보여줍니다?
allocate.c
#include <sys/ipc.h>
#include <sys/shm.h>
#include <errno.h>
#include <string.h>
#define MAXMYMEM 0x200000
int main(int argc, char **argv)
{
int shID;
char *myPtr;
int i;
shID = shmget(2409, MAXMYMEM, IPC_CREAT | SHM_HUGETLB | 0666);
if (shID >= 0) {
myPtr = shmat(shID, 0, 0);
if (myPtr==(char *)-1) {
perror("shmat");
} else {
for (i=0; i<MAXMYMEM; i++) {
myPtr[i] = 'A'+i;
}
getchar();
shmdt(myPtr);
}
} else {
perror("shmget");
}
}
업데이트 1 :
grep -i huge /proc/meminfo
AnonHugePages: 1714176 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
업데이트 2 :
$cat /proc/sys/vm/hugetlb_shm_group
0
$uname -a
Linux 4.4.0-101-generiC#124-Ubuntu SMP Fri Nov 10 18:29:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
'SHM_HUGETLB' 플래그없이 시도해보고 작동하는지 확인하십시오. –
네, SHM_HUGETLB 플래그없이 작동합니다 –
흠 ... 어떻게 SHM_HUGETLB없이 작동하는지 설명 할 수 있습니까? 감사! –