Messages in this thread | | | From | Vincent Whitchurch <> | Subject | Re: [PATCH] um: time-travel: fix time going backwards | Date | Wed, 25 Oct 2023 11:55:02 +0000 |
| |
On Mon, 2023-10-23 at 09:33 +0200, Johannes Berg wrote: > Do you have a specific workload that tends to reproduce this?
I've been seeing it when running roadtest, but it's easily reproducible without that by using the attached config and the following program as init.
cp repro.config .config make ARCH=um olddefconfig all gcc -Wall -static -o repro repro.c ./linux time-travel init=$PWD/repro rootfstype=hostfs
With the above commands I usually see the panic in a few seconds. This is on an unmodified v6.6-rc7.
----8<------- #include <time.h> #include <pthread.h> #include <sys/types.h> #include <unistd.h> #include <stdio.h>
int main(void) { if (fork() == 0) { while (1) { nanosleep(&(struct timespec){.tv_nsec = 330 * 1000}, NULL); } return 0; } while (1) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); nanosleep(&(struct timespec){.tv_nsec = 22 * 1000}, NULL); } return 0; } # CONFIG_LOCALVERSION_AUTO is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_LOG_BUF_SHIFT=18 CONFIG_EXPERT=y CONFIG_HOSTFS=y CONFIG_MAGIC_SYSRQ=y CONFIG_UML_TIME_TRAVEL_SUPPORT=y CONFIG_SSL=y CONFIG_NULL_CHAN=y CONFIG_PORT_CHAN=y CONFIG_PTY_CHAN=y CONFIG_TTY_CHAN=y CONFIG_XTERM_CHAN=y CONFIG_CON_CHAN="pts" CONFIG_SSL_CHAN="pts" CONFIG_VIRTIO_UML=y CONFIG_UML_PCI_OVER_VIRTIO=y CONFIG_UML_PCI_OVER_VIRTIO_DEVICE_ID=1234 CONFIG_GCOV_KERNEL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_BINFMT_MISC=m # CONFIG_COMPACTION is not set CONFIG_NET=y CONFIG_UNIX=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_OF=y # CONFIG_INPUT is not set CONFIG_LEGACY_PTY_COUNT=32 CONFIG_SERIAL_SC16IS7XX=m CONFIG_GOLDFISH_TTY=m CONFIG_SERIAL_DEV_BUS=y CONFIG_UML_RANDOM=y # CONFIG_I2C_COMPAT is not set CONFIG_I2C_CHARDEV=y CONFIG_I2C_VIRTIO=y CONFIG_I2C_STUB=m CONFIG_SPI=y CONFIG_SPI_SC18IS602=y CONFIG_SPI_MUX=y CONFIG_PINCTRL=y CONFIG_GPIOLIB=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_GENERIC_PLATFORM=m CONFIG_GPIO_MOCKUP=y CONFIG_GPIO_VIRTIO=y CONFIG_POWER_SUPPLY=y CONFIG_CHARGER_BQ256XX=m CONFIG_PMBUS=y CONFIG_SENSORS_LTC2978=m CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_TMP401=m CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_VIRTUAL_CONSUMER=m CONFIG_REGULATOR_GPIO=m CONFIG_REGULATOR_TPS6286X=m CONFIG_REGULATOR_TPS6287X=m CONFIG_DRM=y CONFIG_TINYDRM_ILI9341=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_GPIO=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_RTC_CLASS=y # CONFIG_RTC_HCTOSYS is not set # CONFIG_RTC_SYSTOHC is not set CONFIG_RTC_DEBUG=y CONFIG_RTC_DRV_PCF8523=m CONFIG_RTC_DRV_PCF8563=m CONFIG_GOLDFISH=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_SI5351=m CONFIG_IIO=y CONFIG_IIO_BUFFER_CB=m CONFIG_IIO_SW_TRIGGER=y CONFIG_MCP320X=m CONFIG_TI_ADC081C=m CONFIG_TI_ADC084S021=m CONFIG_TI_ADS7924=m CONFIG_PMS7003=m CONFIG_OPT3001=m CONFIG_OPT4001=m CONFIG_VCNL4000=m CONFIG_IIO_HRTIMER_TRIGGER=y CONFIG_IIO_SYSFS_TRIGGER=y CONFIG_IRSD200=m CONFIG_PWM=y CONFIG_PWM_PCA9685=m CONFIG_MUX_GPIO=y CONFIG_QUOTA=y CONFIG_PROC_KCORE=y CONFIG_TMPFS=y CONFIG_NLS=y CONFIG_CRYPTO=y CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRC16=y CONFIG_PRINTK_TIME=y CONFIG_PRINTK_CALLER=y CONFIG_DYNAMIC_DEBUG=y CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_GDB_SCRIPTS=y CONFIG_FRAME_WARN=1024 CONFIG_READABLE_ASM=y CONFIG_DEBUG_FS=y CONFIG_UBSAN=y CONFIG_PAGE_EXTENSION=y CONFIG_DEBUG_OBJECTS=y CONFIG_DEBUG_OBJECTS_FREE=y CONFIG_DEBUG_OBJECTS_TIMERS=y CONFIG_DEBUG_OBJECTS_WORK=y CONFIG_KASAN=y CONFIG_PROVE_LOCKING=y CONFIG_ENABLE_DEFAULT_TRACERS=y CONFIG_FAULT_INJECTION=y CONFIG_FAILSLAB=y CONFIG_FAULT_INJECTION_DEBUG_FS=y CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
| |