mirror of
https://github.com/reactos/syzkaller.git
synced 2024-10-07 00:53:27 +00:00
executor/linux: dump mount information when failed to open kcov file
There are many "lost connection to test machine (5)" reports where the testing terminated due to ENOENT upon open("/sys/kernel/debug/kcov"). Since some testcase might be unintendedly modifying mount information, let's start from checking whether/how mount is broken. This commit might be reverted after the cause is identified and fixed.
This commit is contained in:
parent
1bf9153625
commit
bc15f7dbbc
@ -94,8 +94,30 @@ static intptr_t execute_syscall(const call_t* c, intptr_t a[kMaxArgs])
|
||||
static void cover_open(cover_t* cov, bool extra)
|
||||
{
|
||||
int fd = open("/sys/kernel/debug/kcov", O_RDWR);
|
||||
if (fd == -1)
|
||||
if (fd == -1) {
|
||||
const int err = errno;
|
||||
if (chdir("/sys/"))
|
||||
fprintf(stderr, "/sys/ does not exist.\n");
|
||||
else if (chdir("/sys/kernel/"))
|
||||
fprintf(stderr, "/sys/kernel/ does not exist.\n");
|
||||
else if (chdir("/sys/kernel/debug/"))
|
||||
fprintf(stderr, "/sys/kernel/debug/ does not exist.\n");
|
||||
fd = open("/proc/mounts", O_RDONLY);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "open of /proc/mounts failed.\n");
|
||||
if (chdir("/proc/"))
|
||||
fprintf(stderr, "/proc/ does not exist.\n");
|
||||
} else {
|
||||
static char buffer[4096];
|
||||
int len;
|
||||
fprintf(stderr, "Content of /proc/mounts\n");
|
||||
while ((len = read(fd, buffer, sizeof(buffer))) > 0)
|
||||
fwrite(buffer, 1, len, stderr);
|
||||
close(fd);
|
||||
}
|
||||
errno = err;
|
||||
fail("open of /sys/kernel/debug/kcov failed");
|
||||
}
|
||||
if (dup2(fd, cov->fd) < 0)
|
||||
fail("filed to dup2(%d, %d) cover fd", fd, cov->fd);
|
||||
close(fd);
|
||||
|
Loading…
Reference in New Issue
Block a user