group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #00911
[Bug 1548414] Re: Floating-point exception handler receives empty Data-Exception Code in Floating Point Control register
Cherry-picked 1b17cb796f5d40ffa239c6926385abd83a77a49b s390/fpu: signals
vs. floating point control register
** Also affects: linux (Ubuntu Xenial)
Importance: High
Assignee: Andy Whitcroft (apw)
Status: Triaged
** Changed in: linux (Ubuntu Xenial)
Status: Triaged => Fix Committed
** Changed in: linux (Ubuntu Xenial)
Assignee: Andy Whitcroft (apw) => Tim Gardner (timg-tpi)
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1548414
Title:
Floating-point exception handler receives empty Data-Exception Code in
Floating Point Control register
Status in linux package in Ubuntu:
Fix Committed
Status in linux source package in Xenial:
Fix Committed
Bug description:
== Comment: #0 - Alexander Efremkin <a.efremkin@xxxxxxxxxx> - 2016-02-17 12:18:14 ==
With a C program sets FPE handler and triggers an FPE exception, it expects that machine-dependent context data, which is passed to the handler, will contain sensible values.
In this scenario, however, FPC register was zero and contained no DXC
(Data-Exception Code) indication:
#include <stdio.h>
#include <string.h>
#include <signal.h>
void trapFunction() {
asm volatile ("lhi %r1,0\n\t"
"cit %r1,0,8\n\t");
}
static void sigFPE_handler(int signal, siginfo_t *info, void *context) {
ucontext_t *uc = context;
mcontext_t mc = uc->uc_mcontext;
fpregset_t fpregs = mc.fpregs;
unsigned int fpc = fpregs.fpc;
printf("received signal!\n");
printf("fpc: %08x\n", fpc );
}
int main() {
struct sigaction action;
memset(&action, '\0', sizeof(action));
printf("registering signal handler\n");
action.sa_flags |= SA_SIGINFO;
action.sa_sigaction = sigFPE_handler;
if (sigaction(SIGFPE, &action, NULL))
printf("error calling sigaction\n");
printf("firing trap\n");
trapFunction();
return 0;
}
This program prints "fpc: 00000000", but the expected output is "fpc:
0000ff00"..
The IBM Java team has encountered test failures around the use of trap
instructions; Linux on z Distribution Test reproduced the issue on the
following system:
z13 LPAR
Ubuntu 16.04
Kernel 4.4.0-4-generic
gcc (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205
libc6 2.21-0ubuntu5
Also, similar issue has been found during test of SIMD (vector)
instructions, FPC contents was also zero, whereas it expected at least
an exception mask and vector-defined DXC.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1548414/+subscriptions