Messages in this thread | | | Subject | Re: INFO: rcu detected stall in n_tty_receive_char_special | From | Tetsuo Handa <> | Date | Tue, 24 Apr 2018 01:01:11 +0900 |
| |
On 2018/04/22 0:34, Tetsuo Handa wrote: > Dmitry Vyukov wrote: >> This looks somewhat similar to "INFO: rcu detected stall in __process_echoes": >> https://syzkaller.appspot.com/bug?id=17f23b094cd80df750e5b0f8982c521ee6bcbf40 >> But I am not sure because stall stacks are somewhat different. > > Yes, this will be the same one which can be reproduced using same reproducer > provided by syzbot. You can try below one like "while :; do echo -n .; ./a.out; done". > > ---------------------------------------- > #include <fcntl.h> > #include <stdio.h> > #include <sys/ioctl.h> > #include <sys/stat.h> > #include <unistd.h> > > int main(int argc, char *argv[]) > { > int fd[2]; > unsigned int zero = 0; > char buf[128]; > int ptyno = 0; > char c = 0; > char data[64] = { }; > while (1) { > fd[0] = open("/dev/ptmx", O_RDWR); > ioctl(fd[0], TIOCSPTLCK, &zero); > write(fd[0], data, sizeof(data)); > if (ioctl(fd[0], TIOCGPTN, &ptyno)) > break; > sprintf(buf, "/dev/pts/%d", ptyno); > fd[1] = open(buf, O_RDONLY); > if (fd[1] == EOF) > break; > ioctl(fd[1], TIOCSTI, &c); > } > return 1; > } > ----------------------------------------
Bisection reached to commit e052c6d15c61cc4c ("tty: Use unbound workqueue for all input workers") added in 4.4-rc1.
Reverting that commit on top of 4.4 solved the lockup. But unfortunately, reverting that commit on top of 4.16 only helped surviving the test longer than vanilla 4.16; still stalls at __process_echoes(). There might be similar changes which need to be reverted as well.
# bad: [8005c49d9aea74d382f474ce11afbbc7d7130bec] Linux 4.4-rc1 # good: [6a13feb9c82803e2b815eca72fa7a9f5561d7861] Linux 4.3 # good: [64291f7db5bd8150a74ad2036f1037e6a0428df2] Linux 4.2 # good: [b953c0d234bc72e8489d3bf51a276c5c4ec85345] Linux 4.1 # good: [39a8804455fb23f09157341d3ba7db6d7ae6ee76] Linux 4.0 # good: [bfa76d49576599a4b9f9b7a71f23d73d6dcff735] Linux 3.19 # good: [b2776bf7149bddd1f4161f14f79520f17fc1d71d] Linux 3.18 # good: [bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9] Linux 3.17 # good: [19583ca584d6f574384e17fe7613dfaeadcdc4a6] Linux 3.16 # good: [1860e379875dfe7271c649058aeddffe5afd9d0d] Linux 3.15 # good: [455c6fdbd219161bd09b1165f11699d6d73de11c] Linux 3.14 # good: [d8ec26d7f8287f5788a494f56e8814210f0e64be] Linux 3.13 # good: [5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52] Linux 3.12 git bisect start 'HEAD' 'v4.3' 'v4.2' 'v4.1' 'v4.0' 'v3.19' 'v3.18' 'v3.17' 'v3.16' 'v3.15' 'v3.14' 'v3.13' 'v3.12' '--' 'drivers/tty/' # good: [cc32382d9fd22dc8eebba4a245f50417267bda8e] serial: imx: make setup_ufcr more useful git bisect good cc32382d9fd22dc8eebba4a245f50417267bda8e # good: [32ede4a51754cb62b0d43d91cb7c4e3c57069a9c] serial: tegra: Add helper function for handling RX buffer git bisect good 32ede4a51754cb62b0d43d91cb7c4e3c57069a9c # good: [4b41b9539a1e9531f942ededfcdcff372317d2e7] tty: Prevent tty teardown during tty_write_message() git bisect good 4b41b9539a1e9531f942ededfcdcff372317d2e7 # bad: [fd0d351de7bbd718bc2b34d5846854831aa2b88c] Merge tag 'tty-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty git bisect bad fd0d351de7bbd718bc2b34d5846854831aa2b88c # good: [14c79092909a52b6fd6394b6ad5e7756c4f9565e] Merge branch 'parisc-4.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux git bisect good 14c79092909a52b6fd6394b6ad5e7756c4f9565e # good: [41ecf1404b34d9975eb97f5005d9e4274eaeb76a] Merge tag 'for-linus-4.4-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip git bisect good 41ecf1404b34d9975eb97f5005d9e4274eaeb76a # bad: [e052c6d15c61cc4caff2f06cbca72b183da9f15e] tty: Use unbound workqueue for all input workers git bisect bad e052c6d15c61cc4caff2f06cbca72b183da9f15e # good: [e176058f0de53c2346734e5254835e0045364001] tty: Abstract tty buffer work git bisect good e176058f0de53c2346734e5254835e0045364001 # first bad commit: [e052c6d15c61cc4caff2f06cbca72b183da9f15e] tty: Use unbound workqueue for all input workers
| |