This bug is missing log files that will aid in diagnosing the problem.
While running an Ubuntu kernel (not a mainline or third-party kernel)
please enter the following command in a terminal window:
apport-collect 1872945
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable
to run this command, please add a comment stating that fact and change
the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the
Ubuntu Kernel Team.
** Changed in: linux (Ubuntu)
Status: New => Incomplete
** Tags added: focal
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1872945
Title:
risc-v doubles getting clobbered somehow
Status in linux package in Ubuntu:
Incomplete
Status in qemu package in Ubuntu:
New
Bug description:
I've been noticing that doubles get clobbered in stress-ng. I managed
to whittle it down to the following reproducer that can trip the issue
on a risc-v system running the Linux risc-v-qemu 5.4.0-24-generic
kernel. This also occurs on other older kernels too. I've tested
this with gcc-9, gcc-10 and clang-9 too.
#include <sys/time.h>
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <errno.h>
double timeval_to_double(const struct timeval *tv)
{
return (double)tv->tv_sec + ((double)tv->tv_usec / 1000000.0);
}
int main(void)
{
struct timeval tv2, tv1;
double t1;
bool fail = false;
gettimeofday(&tv1, NULL);
t1 = timeval_to_double(&tv1);
for (;;) {
double t2;
int tmp;
gettimeofday(&tv2, NULL);
t2 = timeval_to_double(&tv2);
tmp = errno;
if (t2 - t1 < 0.0) {
printf("%f %f %f\n", t1, t2, t2 - t1);
printf("START : %f %ld %ld (%lx %lx) errno=%d\n",
t1,
tv1.tv_sec, tv1.tv_usec,
tv1.tv_sec, tv1.tv_usec,
tmp);
printf("NOW BAD: %f %ld %ld (%lx %lx) errno=%d\n",
t2,
tv2.tv_sec, tv2.tv_usec,
tv2.tv_sec, tv2.tv_usec,
tmp);
fail = true;
} else {
if (fail) {
printf("NOW OK: %f %ld %ld (%lx %lx)
errno=%d\n",
t2,
tv2.tv_sec, tv2.tv_usec,
tv2.tv_sec, tv2.tv_usec,
tmp);
}
fail = false;
}
}
}
Run the code (compiled with -O0, -O1 or even O2) and after some (long)
random-ish time I see:
./a.out
1575050049.059796 0.000000 -1575050049.059796
START : 1575050049.059796 1575050049 59796 (5de15b41 e994) errno=0
NOW BAD: 0.000000 1575050053 437619 (5de15b45 6ad73) errno=0
NOW OK: 1575050053.460829 1575050053 460829 (5de15b45 7081d) errno=0
So the t2 value is zero which is a bit weird. The integer values for
the tv struct are sane though, so it appears not to be a bad struct
value returned from the kernel.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1872945/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp