Hi Richard, On 2016/3/10 4:44, Richard Weinberger wrote: > Hmm, this needs rework. Having everything on the stack is not good.
Okay, I'll rework the functions whose stack size is greater than the warning threshold by using kmalloc. > Can you also create a selftest such that this bug cannot happen again? It seems that instead of writing a self-test showing this problem cannot happen again, I wrote a test that manifested another bug that is not directly related to my patch. Without applying my patch, the current UML should support XMM registers because those are covered by _fpstate and PTRACE_GETFPREGS. But it seemed that XMM registers are not restored after the signal handler returns. In the following quick test, the main loop should run indefinitely despite XMM registers are modified by the signal handler. But in UML, the loop breaks randomly within a minute or two, showing that the registers are corrupted. So far I haven't found the cause. Any hints? Thanks, Eli --- /* test if signal handling preserves XMM registers */ #include <stdio.h> #include <unistd.h> #include <signal.h> int count; void sighandler(int signum) { count++; /* alarm(1) without calling libc */ asm("mov $0x1,%rdi"); asm("mov $0x25,%rax"); asm("syscall"); asm("movq $0xdeadbeef,%r11"); /* the following two instructions * modify xmm0 and xmm1 registers */ asm("vmovq %r11,%xmm0"); asm("vmovq %r11,%xmm1"); } int main() { struct sigaction act; double a = 3.14159, b = 2.71828; act.sa_handler = sighandler; act.sa_flags = 0; sigemptyset(&act.sa_mask); sigaction(SIGALRM, &act, NULL); alarm(1); /* this loop should run indefinitely */ while (a + b == a + b) ; printf("count = %d\n", count); return 1; } ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel