ref: d936e15ac255fdc5b07b24a4feedcf937b77ffcf
parent: 8803081b7627b4af07486c401fc919459be95711
	author: cinap_lenrek <cinap_lenrek@felloff.net>
	date: Sat Aug 16 09:01:43 EDT 2025
	
kernel: fill stack segments with 0xfefe... pattern To aid detecting uninitialized variables (or missing NUL termination of string buffers), fill the stack segment with 0xfefe... pattern instead of zero.
--- a/sys/src/9/port/devsegment.c
+++ b/sys/src/9/port/devsegment.c
@@ -522,7 +522,7 @@
p->va = va;
va += BY2PG;
p->modref = 0;
- zeropage(p);
+ fillpage(p, 0);
 			if(waserror()){while(++p <= l)
freepages(p, p, 1);
--- a/sys/src/9/port/fault.c
+++ b/sys/src/9/port/fault.c
@@ -174,12 +174,13 @@
break;
case SG_BSS:
- case SG_SHARED: /* Zero fill on demand */
+ case SG_SHARED: /* fill on demand */
case SG_STACK:
 		if(*pg == nil) {- new = newpage(1, &s, addr);
+ new = newpage(0, &s, addr);
if(s == nil)
return -1;
+ fillpage(new, (s->type&SG_TYPE)==SG_STACK? 0xfe: 0);
*pg = new;
s->used++;
}
--- a/sys/src/9/port/page.c
+++ b/sys/src/9/port/page.c
@@ -232,7 +232,7 @@
inittxtflush(p);
if(clear)
- zeropage(p);
+ fillpage(p, 0);
return p;
}
@@ -273,14 +273,17 @@
kunmap(kd);
}
-void
-zeropage(Page *p)
+Page*
+fillpage(Page *p, int c)
 {KMap *k;
- k = kmap(p);
- memset((void*)VA(k), 0, BY2PG);
- kunmap(k);
+	if(p != nil){+ k = kmap(p);
+ memset((void*)VA(k), c, BY2PG);
+ kunmap(k);
+ }
+ return p;
}
void
@@ -388,7 +391,7 @@
 	for(p = palloc.pages; p != pe; p++) { 		if(p->modref & PG_PRIV){incref(p);
- zeropage(p);
+ fillpage(p, 0);
decref(p);
}
}
--- a/sys/src/9/port/portfns.h
+++ b/sys/src/9/port/portfns.h
@@ -416,7 +416,7 @@
void* xspanalloc(ulong, int, ulong);
void xsummary(void);
void yield(void);
-void zeropage(Page*);
+Page* fillpage(Page*, int);
void zeroprivatepages(void);
Segment* data2txt(Segment*);
Segment* dupseg(Segment**, int, int);
--- a/sys/src/9/port/sysproc.c
+++ b/sys/src/9/port/sysproc.c
@@ -541,6 +541,7 @@
memmove(charp, a, n);
charp += n;
}
+ *argv = nil;
/* copy args; easiest from new process's stack */
a = (char*)(tstk - nbytes);
--
⑨