Comment 0 for bug 1649718

Revision history for this message
Seth Forshee (sforshee) wrote :

ADT testing for the linux package hangs at the kernel's rtc selftest, for example:

https://objectstorage.prodstack4-5.canonical.com/v1/AUTH_77e2ada1e7a84929a74ba3b87153c0ac/autopkgtest-zesty/zesty/amd64/l/linux/20161212_132117_a258d@/log.gz

Running this test manually, I've observed that this will hang in me with various kernel versions going back to 4.4 in a VM on my machine which is running xenial. The test runs to completion in a VM on a different machine running zesty.

This is the section of the test which produces the hang:

        /* Turn on update interrupts (one per second) */
        retval = ioctl(fd, RTC_UIE_ON, 0);
        if (retval == -1) {
                if (errno == EINVAL) {
                        fprintf(stderr,
                                "\n...Update IRQs not supported.\n");
                        goto test_READ;
                }
                perror("RTC_UIE_ON ioctl");
                exit(errno);
        }

        fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading %s:",
                        rtc);
        fflush(stderr);
        for (i=1; i<6; i++) {
                /* This read will block */
                retval = read(fd, &data, sizeof(unsigned long));
                if (retval == -1) {
                        perror("read");
                        exit(errno);
                }
                fprintf(stderr, " %d",i);
                fflush(stderr);
                irqcount++;
        }

The read blocks indefinitely most of the time. After boot it might return once or twice before it hangs, but running the test subsequently always hangs on the first read. I'll attach the full source for the test (rtctest.c).