is stdlib/tst-setcontext7 a bad test?

Szabolcs Nagy szabolcs.nagy@arm.com
Fri Mar 27 09:59:14 GMT 2020


i'm planing to change swapcontext on aarch64 and i see

FAIL: stdlib/tst-setcontext7

that test case seems wrong to me, a simplified version is

#include <ucontext.h>
#include <stdio.h>

ucontext_t uc[2];
volatile int count = 0;

int main ()
{
	getcontext (uc+0);
	printf ("%d\n", count);
	if (count)
		setcontext (uc+1);
	count++;
	swapcontext (uc+1, uc+0);
	printf ("done\n");
	return 0;
}

this seems to work today and prints

0
1
done

but i don't think we can guarantee that after a
swapcontext to a getcontext on the same stack frame
resuming the context works: if swapcontext uses the
stack (which is what i plan to do) then that stack
will be corrupted.

does glibc plan to support this usage? i.e. should
i ensure swapcontext does not use the stack? (and
should gcc ensure no stack is used in the example
between getcontext and swapcontext?)



More information about the Libc-alpha mailing list