> > Hi all: > > I meet a kernel problem about the random segmentation fault(x86_64). In my > testcase, the size of local variables exceeds 20MB. > when run the testcase, it will cause segmentation fault(because the default > stack size limit is 8192KB). > when I increase the stack size limit to 1024000KB(ulimit -s 1024000), the > testcase will pass. > > But when I run the testcase 100 times, it will cause random segmentation > fault. > > Maybe the commit fee7e49d45149fba60156f5b59014f764d3e3728 "mm: propagate > error from stack expansion even for guard page" > cause this problems, when I revert it, the testcase will not cause random > segmentation fault problem. > > Can anyone give some ideas about this problem? > > Best Regards > Wang Long > > ############ Test Environment ############# > > # uname -a > Linux ivybridge 4.1.0-rc2+ #3 SMP PREEMPT Wed May 6 10:46:57 CST 2015 x86_64 > x86_64 x86_64 GNU/Linux > > > ############ The Testcase ################ > > #include <stdio.h> > #include <stdlib.h> > #include <sys/resource.h> > > #define KB *1024 > #define MB *(1024*1024) > #define GB *(1024*1024*1024) > > int main(int argc, char** argv) > { > int ret; > struct rlimit rlim; > > rlim.rlim_cur=20 MB; > rlim.rlim_max=20 MB;
Can you please get rlimit before setting it? And try again without reverting fee7e49d45? > ret = setrlimit(RLIMIT_AS, &rlim); > if ( 0 > ret) > { > perror("setrlimit failed"); > exit(1); > } > > printf("setrlimit success\n"); > > char tmp[20 MB]; > int i = 0; > > for (i = 0; i < 20 MB; i++) > { > tmp[i]=1; > } > > printf("test success\n"); > exit(1); > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/