Path: csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!bofh.it!news.nic.it!robomod From: Pavel Labath Newsgroups: linux.kernel Subject: ptrace and pseudoterminals Date: Wed, 04 Nov 2015 00:20:02 +0100 Message-ID: X-Original-To: Oleg Nesterov , linux-kernel@vger.kernel.org Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=XwW4lR9HdEfgt54jBYGeNydT4qgq9I6HA+LpIjpTa/0=; b=D8Qvu5ey+8RvRv3zkSWOunRHPr6EMh/YtxIvME72Ry9kKA5dKZw+PktIvaGjw7kucb yPrA23dE2W7jhBXDQ8tfAYIodSPyPObSWJRR+YemSOOJrZr1wawwDs2y/Z00jQLNbzE4 ndPX3oYn2nM3nXby/au+cJ2PFu7TnYlZYU4k31hceBUwvhCDiFWf7rr94SHENYDsl/kY cnihKhn5kpX11yp7tgAygdwbSVwzbSzKxOtsvs+8mfaDm/ytyaAi34sWa+ulMvkMqU63 djNdqiyHB8shjGplGLnm9PsKi0SqbjEof1jm50BNN095IjmnK8vtNNqalpE280lhf82W i3yQ== X-Google-Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-type; bh=XwW4lR9HdEfgt54jBYGeNydT4qgq9I6HA+LpIjpTa/0=; b=i5GngT8dDDb21D00v0lerUBssTBWUIP2jCFy2b5Ih2FBcGK2K/8pZCNyWEtaNEkmKl i/rZ+HHJVh1ZQbqgXu5zROBGGmyVOuduLwuTxdMuyxPn+vmvlkS7wgEJcb4jDSNTY8pz Jni51J9xP3KFnqaH00AaUWSh3N5R/rQYWCbmK/pfA/u6mhw4KNJpaBdvZ7Yf/sxtePUf lsILQqcpTRU7JxPdWdvzSyaxf3QbnMDz9cYJmtV1XwXQfSL3N9VtBsv6wIVfEbNQEl5H dFOnxkp8MwiEI2bqJ2LNj9ZnMQSZDMMqhnDOen8fjRiZHYvt3AJtyVJSpbpvx0b2BiVt JZCA== X-Gm-Message-State: ALoCoQn7cxtitNnrHn8MEAuNurln4UfPephdd95EqlolAFKCtV/HdFF18nBmFYTAgSV1ZEs/NHYl X-Received: by 10.112.131.8 with SMTP id oi8mr11394805lbb.99.1446592639478; Tue, 03 Nov 2015 15:17:19 -0800 (PST) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8f23501569cbc20523ab18f4 Sender: robomod@news.nic.it List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Approved: robomod@news.nic.it Lines: 72 Organization: linux.* mail to news gateway X-Original-Date: Tue, 3 Nov 2015 15:16:59 -0800 X-Original-Message-ID: X-Original-Sender: linux-kernel-owner@vger.kernel.org Xref: csiph.com linux.kernel:1261953 --e89a8f23501569cbc20523ab18f4 Content-Type: text/plain; charset=UTF-8 Hello Oleg, everyone, I have noticed something, which may be considered a race in the interaction of ptrace and pseudoterminal interfaces. Basically, what happens is this: - we have two processes: A and B. B has the slave end of the pty open, A has the master. A is tracing B. - B writes some data through the slave end and then stops. - A waits for B to stop. - A does a select on the master pty endpoint. select returns there is no data available - later, A tries the select again, and this time the data appears. We are encountering this (very rare) issue in our debugger test suite, where we check the stdout of the tracee to make sure it is behaving as expected. I have attached a small program reproducing this behavior (it fails after about 1000 iterations on a 3.13.0 kernel, I can retry it on a newer kernel next week if you believe it might work there). Interestingly, when I replace the pty with a regular pipe, it works as expected (the data is available as soon as the program stops). My question is: Is this behavior something that you would consider a bug? If yes, do you have any pointers, as to where I should look to fix it? kind regards, pavel --e89a8f23501569cbc20523ab18f4 Content-Type: text/x-csrc; charset=US-ASCII; name="pty.c" Content-Disposition: attachment; filename="pty.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_igjzvqq70 I2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CiNpbmNsdWRlIDxzeXMvcHRy YWNlLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5oPgojaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgojaW5j bHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKdm9pZCBjaGlsZChpbnQgd3JpdGVm ZCkKewogICAgcHRyYWNlKFBUUkFDRV9UUkFDRU1FLCAwLCAwLCAwKTsKICAgIHJhaXNlKFNJR1NU T1ApOwogICAgYXNzZXJ0KHdyaXRlKHdyaXRlZmQsICJ4IiwgMSkgPT0gMSk7CiAgICByYWlzZShT SUdTVE9QKTsKfQoKdm9pZCBwYXJlbnQocGlkX3QgY2hpbGQsIGludCByZWFkZmQpCnsKICAgIGlu dCBzdGF0dXM7CiAgICBhc3NlcnQod2FpdHBpZChjaGlsZCwgJnN0YXR1cywgMCkgPT0gY2hpbGQp OwogICAgYXNzZXJ0KFdJRlNUT1BQRUQoc3RhdHVzKSk7CiAgICBhc3NlcnQoV1NUT1BTSUcoc3Rh dHVzKSA9PSBTSUdTVE9QKTsKICAgIGZkX3NldCBzZXQ7CiAgICBzdHJ1Y3QgdGltZXZhbCB0djsK ICAgIEZEX1pFUk8oJnNldCk7CiAgICBGRF9TRVQocmVhZGZkLCAmc2V0KTsKICAgIHR2LnR2X3Nl YyA9IDA7CiAgICB0di50dl91c2VjID0gMDsKICAgIGFzc2VydChzZWxlY3QocmVhZGZkKzEsICZz ZXQsIDAsIDAsICZ0dikgPT0gMCk7CiAgICBGRF9aRVJPKCZzZXQpOwogICAgRkRfU0VUKHJlYWRm ZCwgJnNldCk7CiAgICB0di50dl9zZWMgPSAwOwogICAgdHYudHZfdXNlYyA9IDA7CgogICAgYXNz ZXJ0KHB0cmFjZShQVFJBQ0VfQ09OVCwgY2hpbGQsIDAsIDApID09IDApOwogICAgYXNzZXJ0KHdh aXRwaWQoY2hpbGQsICZzdGF0dXMsIDApID09IGNoaWxkKTsKICAgIGFzc2VydChzZWxlY3QocmVh ZGZkKzEsICZzZXQsIDAsIDAsICZ0dikgPT0gMSk7CiAgICBraWxsKGNoaWxkLCBTSUdLSUxMKTsK ICAgIGFzc2VydChjbG9zZShyZWFkZmQpID09IDApOwogICAgYXNzZXJ0KHdhaXRwaWQoY2hpbGQs ICZzdGF0dXMsIDApID09IGNoaWxkKTsKICAgIGFzc2VydChXSUZTSUdOQUxFRChzdGF0dXMpKTsK ICAgIGFzc2VydChXVEVSTVNJRyhzdGF0dXMpID09IFNJR0tJTEwpOwp9CgppbnQgbWFpbihpbnQg YXJnYykKewogICAgaW50IHBpcGVmZFsyXTsKICAgIGludCBpID0gMDsKICAgIGZvciAoOzspCiAg ICB7CiAgICAgICAgKytpOwogICAgICAgIGlmICghKGklMTApKQogICAgICAgICAgICBwcmludGYo IiVkXG4iLCBpKTsKICAgICAgICBhc3NlcnQob3BlbnB0eShwaXBlZmQrMCwgcGlwZWZkKzEsIDAs IDApID09IDApOwovLyAgICAgICAgYXNzZXJ0KHBpcGUocGlwZWZkKSA9PSAwKTsKICAgICAgICBw aWRfdCBwaWQgPSBmb3JrKCk7CiAgICAgICAgYXNzZXJ0KHBpZCAhPSAtMSk7CiAgICAgICAgaWYg KHBpZCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgYXNzZXJ0KGNsb3NlKHBpcGVmZFswXSkg PT0gMCk7CiAgICAgICAgICAgIGNoaWxkKHBpcGVmZFsxXSk7CiAgICAgICAgICAgIHJldHVybiAx OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBhc3NlcnQoY2xv c2UocGlwZWZkWzFdKSA9PSAwKTsKICAgICAgICAgICAgcGFyZW50KHBpZCwgcGlwZWZkWzBdKTsK ICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo= --e89a8f23501569cbc20523ab18f4-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/