code wiki / (root) / nx_release_recent_oom_gate_t205.nx

nx_release_recent_oom_gate_t205.nx source

↩ module page · 43 lines · 2396 B

1import "nx_release_recent_lib.nx" 2import "nx_gate_verdict.nx" 3func main()->i64 { 4 let checks:*i64=gv_ctr() 5 let r:*ReleaseRecent=rr_new() 6 let counts:*i64=sys_mmap(RD_COUNTS*__size_of(i64)) as *i64 7 let old:*i64=sys_mmap(2*__size_of(i64)) as *i64 8 let limited:*i64=sys_mmap(2*__size_of(i64)) as *i64 9 let row:*u8="log|1789279405|GE57|land|Alpha & memory\n" 10 if rr_collect(r,row,al_slen(row),"","gameengine",counts)!=1{return 1} 11 let required:i64=rr_required(r) 12 let out:*u8=sys_mmap(required) 13 out[0]=165 as u8 14 counts[RD_C_LISTED]=73 15 let retained:*i64=r.rows 16 let capacity:i64=r.capacity 17 if nx_prlimit(0,RLIMIT_AS,0 as *u8,old as *u8)!=0{return 2} 18 limited[0]=0;limited[1]=old[1] 19 if nx_prlimit(0,RLIMIT_AS,limited as *u8,0 as *u8)!=0{return 3} 20 // Isolated qualifier only: actual denial without exhausting shared host memory. 21 let probe:*u8=sys_mmap_try(1) 22 let fresh:*ReleaseRecent=rr_new() 23 let grow:i64=rr_reserve(r,capacity+1) 24 let render:i64=rr_render(r,out,required,counts) 25 let collect:i64=rr_collect(r,row,al_slen(row),"","gameengine",counts) 26 let restored:i64=nx_prlimit(0,RLIMIT_AS,old as *u8,0 as *u8) 27 if restored!=0{return 4} 28 gv_check("actual mapping denial confirmed",(probe as i64)<=0,checks) 29 gv_check("constructor returns refusal",(fresh as i64)<=0,checks) 30 gv_check("reserve refusal preserves allocation",grow==0 && r.rows==retained && r.capacity==capacity,checks) 31 gv_check("render refusal preserves output and count",render<0 && out[0]==165 as u8 && counts[RD_C_LISTED]==73,checks) 32 gv_check("collection refusal preserves retained rows",collect<0 && r.count==1 && counts[RD_C_LAND]==1,checks) 33 gv_check("render recovers after limit restoration",rr_render(r,out,required,counts)>0 && counts[RD_C_LISTED]==1,checks) 34 gv_check("collection recovers after limit restoration",rr_collect(r,row,al_slen(row),"","gameengine",counts)==2,checks) 35 if nx_prlimit(0,RLIMIT_AS,limited as *u8,0 as *u8)!=0{return 5} 36 let sort:i64=rr_sort(r) 37 let restoreSort:i64=nx_prlimit(0,RLIMIT_AS,old as *u8,0 as *u8) 38 if restoreSort!=0{return 6} 39 gv_check("sort scratch allocation refusal returned",sort==0 && r.count==2,checks) 40 gv_check("sort recovery",rr_sort(r)==1,checks) 41 gv_check("owned mappings released",rr_destroy(r)==0,checks) 42 return gv_verdict("release-allocation",checks,"actual allocation denial and recovery; no host pressure induced; page emitter allocation migration separate") 43}