From owner-freebsd-questions Mon Sep 18 15:46: 8 2000 Delivered-To: freebsd-questions@freebsd.org Received: from ellipse.mcs.drexel.edu (ellipse.mcs.drexel.edu [129.25.7.190]) by hub.freebsd.org (Postfix) with ESMTP id 7B38437B43C for ; Mon, 18 Sep 2000 15:46:04 -0700 (PDT) Received: from localhost (cosine@localhost) by ellipse.mcs.drexel.edu (8.9.3/8.9.3) with ESMTP id SAA51467 for ; Mon, 18 Sep 2000 18:39:03 -0400 (EDT) (envelope-from cosine@ellipse.mcs.drexel.edu) Date: Mon, 18 Sep 2000 18:39:03 -0400 (EDT) From: Patrick Alken To: freebsd-questions@freebsd.org Subject: ptrace help Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY="0-2049834737-969303134=:50782" Content-ID: Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-2049834737-969303134=:50782 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: I am experiencing problems with ptrace() under FreeBSD. I made a simple example program to demonstrate. All it does is fork a child process to execl() a simple "hello world" program and ptrace() it with PT_CONTINUE. The first time around, everything is as it should be - the program is executed and traced perfectly. However, when I attempt to repeat the whole process, first by forking a completely new child to execute the helloworld program again, I start getting ptrace() errors such as "Operation not permitted" and "Device busy". Now the weird thing is, after the first trace, the program terminates normally, and I print out the pid of the child process which should no longer be running at this point. ptrace(PT_KILL) verifies this by returning "No such process". However, during the pause between the first and second ptrace, if I do a ps and search for the pid, it shows up in memory as running in the background, although ptrace(PT_KILL) claims it does not exist. Then my sample program attempts to trace the same helloworld program again, and gets "Operation not permitted" - even though an entirely new child is fork()'d with an entirely new pid - so it should have absolutely no connection at all to the first trace. Does anyone know why I can't ptrace() the same helloworld program a second time? I have attached my sample ptrace() program to this message. Thanks in advance for any help Patrick Alken --0-2049834737-969303134=:50782 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="myptrace.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="myptrace.c" LyoNCiAqIFRvIHJ1biB0aGlzLCBtYWtlIGEgcHJvZy5jIHdoaWNoIGNvbnRh aW5zOg0KICogaW50IG1haW4oKSB7IHByaW50ZigiaGVsbG8gd29ybGRcbiIp OyB9DQogKiBhbmQgY29tcGlsZSBpdCBpbnRvIHRoZSBmaWxlICJwcm9nIi4N CiAqDQogKiBUaGVuLCBzaW1wbHk6IGdjYyAtbyBteXB0cmFjZSBteXB0cmFj ZS5jDQogKiBhbmQgLi9teXB0cmFjZQ0KICovDQoNCiNpbmNsdWRlIDxzdGRp by5oPg0KI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9w dHJhY2UuaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KI2luY2x1ZGUgPHN5cy93 YWl0Lmg+DQojaW5jbHVkZSA8bWFjaGluZS9yZWcuaD4NCiNpbmNsdWRlIDx1 bmlzdGQuaD4NCiNpbmNsdWRlIDxzdHJpbmcuaD4NCg0KLyoNCkRvVHJhY2Uo KSAtIGJlZ2luIHRvIHRyYWNlIGEgcHJvY2Vzcw0KKi8NCg0KaW50DQpEb1Ry YWNlKCkNCg0Kew0KICBpbnQgcGlkOyAvKiBjaGlsZCBwaWQgKi8NCiAgaW50 IHdhaXR2YWw7DQoJc3RydWN0IHJlZyByZWdzOw0KDQogIHBpZCA9IGZvcmso KTsNCiAgc3dpdGNoIChwaWQpDQogIHsNCiAgICBjYXNlIC0xOg0KICAgIHsN CiAgICAgIHBlcnJvcigiZm9yayIpOw0KICAgICAgYnJlYWs7DQogICAgfQ0K DQogICAgLyoNCiAgICAgKiBDaGlsZA0KICAgICAqLw0KICAgIGNhc2UgMDoN CiAgICB7DQogICAgICAvKg0KICAgICAgICogQWxsb3cgcGFyZW50IHRvIHRy YWNlIHRoaXMgY2hpbGQgcHJvY2Vzcw0KICAgICAgICovDQogICAgICBwdHJh Y2UoUFRfVFJBQ0VfTUUsIDAsIDAsIDApOw0KICAgICAgDQogICAgICAvKg0K ICAgICAgICogRXhlY3V0ZSBwcm9ncmFtIHRvIGJlIGRlYnVnZ2VkIGFuZCBj YXVzZSBjaGlsZCB0bw0KICAgICAgICogc2VuZCBhIHNpZ25hbCB0byBwYXJl bnQNCiAgICAgICAqLw0KICAgICAgZXhlY2woIi4vcHJvZyIsICJwcm9nIiwg TlVMTCk7DQoNCiAgICAgIGV4aXQoMCk7DQogICAgfQ0KDQogICAgLyoNCiAg ICAgKiBQYXJlbnQNCiAgICAgKi8NCiAgICBkZWZhdWx0Og0KICAgIHsNCiAg ICAgIGludCBwcmV0Ow0KDQogICAgICAvKiANCiAgICAgICAqIFdhaXQgZm9y IGNoaWxkIHRvIHN0b3AgKGV4ZWNsKQ0KICAgICAgICovDQogICAgICB3YWl0 KCZ3YWl0dmFsKTsNCg0KICAgICAgcHJpbnRmKCJ3YWl0dmFsID0gJWRcbiIs IHdhaXR2YWwpOw0KDQogICAgICAvKg0KCQkJICogQ29udGludWUgZXhlY3Rp b24gb2YgcHJvY2Vzcw0KCQkJICovDQoJCQlwcmV0ID0gcHRyYWNlKFBUX0NP TlRJTlVFLCBwaWQsIChjYWRkcl90KSAxLCAwKTsNCgkJCWlmIChwcmV0ICE9 IDApDQoJCQl7DQoJCQkJLyoNCgkJCQkgKiBUaGlzIGlzIHdoZXJlIGl0IGZh aWxzIHRoZSBzZWNvbmQgdGltZSB3aXRoIGFuDQoJCQkJICogZXJybm8gb2Yg MSAoRVBFUk0pLCBldmVuIHRob3VnaCB3ZSBhcmUgdHJhY2luZw0KCQkJCSAq IGEgY29tcGxldGVseSBuZXcgcGlkLg0KCQkJCSAqLw0KCQkJCXBlcnJvcigi cHRyYWNlIik7DQoJCQl9DQoNCiAgICAgIHdhaXQoJndhaXR2YWwpOw0KDQoJ CQlwcmV0ID0gcHRyYWNlKFBUX0tJTEwsIHBpZCwgMCwgMCk7DQoJCQlpZiAo cHJldCA9PSAwKQ0KCQkJew0KCQkJCXByaW50ZigiS2lsbCBzdWNjZXNzZnVs XG4iKTsNCgkJCQl3YWl0KCZ3YWl0dmFsKTsNCgkJCX0NCgkJCWVsc2UNCgkJ CQlwcmludGYoIktpbGwgdW5zdWNjZXNzZnVsLCBlcnJubyA9ICVzXG4iLCBz dHJlcnJvcihlcnJubykpOw0KICAgIH0NCiAgfQ0KDQoJcmV0dXJuIChwaWQp Ow0KfSAvKiBEb1RyYWNlKCkgKi8NCg0KaW50DQptYWluKCkNCg0Kew0KICBp bnQgcGlkOw0KCWNoYXIgYnVmWzUxMl07DQoNCiAgLyoNCgkgKiBUcmFjZSB0 aHJvdWdoIHRoZSBwcm9jZXNzDQoJICovDQoJcGlkID0gRG9UcmFjZSgpOw0K CXByaW50ZigiUGlkMSA9ICVkXG4iLCBwaWQpOw0KDQoJZmdldHMoYnVmLCA1 MTIsIHN0ZGluKTsNCg0KCS8qDQoJICogVHJhY2UgdGhyb3VnaCBhZ2FpbiAo dGhpcyBpcyB3aGVyZSBpdCBmYWlscykNCgkgKi8NCglwaWQgPSBEb1RyYWNl KCk7DQoJcHJpbnRmKCJQaWQyID0gJWRcbiIsIHBpZCk7DQoNCglyZXR1cm4g MDsNCn0NCg== --0-2049834737-969303134=:50782-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message