From owner-freebsd-emulation@freebsd.org Thu Jun 14 08:31:22 2018 Return-Path: Delivered-To: freebsd-emulation@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B3AC210106A7 for ; Thu, 14 Jun 2018 08:31:22 +0000 (UTC) (envelope-from yanko.yankulov@gmail.com) Received: from mail-ot0-x233.google.com (mail-ot0-x233.google.com [IPv6:2607:f8b0:4003:c0f::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 418AE7D589 for ; Thu, 14 Jun 2018 08:31:22 +0000 (UTC) (envelope-from yanko.yankulov@gmail.com) Received: by mail-ot0-x233.google.com with SMTP id c15-v6so6136416otl.3 for ; Thu, 14 Jun 2018 01:31:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Y83gKawMipnRuIoWg/oRKN5MabJChv1pfYsSm9JjK2k=; b=OaqVT4QDueEqp22wI1gQSbZpX9XQEFWOJMFrbtm+yukrQp7I4tBfW18pK4Ztpm8TFQ Q6br7T357gbDA0K3VS+r3X1NfUpXCmYXb0q1r49sg5vVnK/92EJIve8SW0drlQYqL/6F OM1P8AdWfrJx9hhtqmtfAeesTK3mrnSu+5uKXdKmoyJgn3A5ccCLcFQk7RSLxox2Vj+S 0XP8XNSgJQNuawUMpbHhf/7DjVWvQkTo7djpYUUUQwer2Ldao7Xn0oPxXne/hapP1tW7 YsC5gCjpEbJyqITALoKiS5lwf40vzYLQRrLZiOZ2PHLLSGVh4jCtlYJzoQJdmaoiO3g3 V80Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Y83gKawMipnRuIoWg/oRKN5MabJChv1pfYsSm9JjK2k=; b=gxHHlJRef6Fo+KFIsZhAvZ0QdarTiU/7Mg/vsP5fEo6ov2JX4ZW1K/aH2dnJcGprzp 4iIIYHabRzDF2KwNd22cz9kjVCLZ/eYQKhyH8aeiubkeTYGMg2s6xs7+B5foUUCGlJBp QeGe/pdtoVQhwY9aue06MjyAFVpElFlbW5xgqQYZMLbPQq1idTOQuhDZ/baJDTVVL9E5 dxubNilFAAE1w+PRL5dLV/5DpF8fiuYYiJ1CQB/P6waz7W91pqCOMz4wcfmz8ik3q7Ml 1BWh6xLtEdDuuEZwZl47CU8XSZQotsNY23Exr2sNRkX+m1mkgOHuDYIw56Epd3qpLv0B avEQ== X-Gm-Message-State: APt69E0jtDVK3AgJJdveK97WEohmwyGUxha995yjKrGEdEcftQm+vE2D EmNF6mODjVoimLrOjQBdVIi/+xzwPEVSVLMp7iVjxw== X-Google-Smtp-Source: ADUXVKImMPoWsoLtdMVowkHphMr3QYrhJxH/3e8xbBPODqnd5F7a99D8qyXwyokVBz9TxDK6bnZqH+Bh+cpg+dCQN+I= X-Received: by 2002:a9d:759a:: with SMTP id s26-v6mr885030otk.80.1528965081370; Thu, 14 Jun 2018 01:31:21 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:ac9:14cd:0:0:0:0:0 with HTTP; Thu, 14 Jun 2018 01:31:20 -0700 (PDT) From: Yanko Yankulov Date: Thu, 14 Jun 2018 11:31:20 +0300 Message-ID: Subject: two proposed linuxulator fixes + ptrace To: freebsd-emulation@freebsd.org Content-Type: multipart/mixed; boundary="0000000000008cb91f056e95ec70" X-Content-Filtered-By: Mailman/MimeDel 2.1.26 X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jun 2018 08:31:22 -0000 --0000000000008cb91f056e95ec70 Content-Type: text/plain; charset="UTF-8" Hi all, I stumbled on two problems trying to run a proprietary java/native Linux app on FreeBSD. I managed to get it working with two small changes to the Linux compatibility code. Also in order to pinpoint the issues I got the ptrace system working for Linux apps, enabling truss & gdb. This is all on recent CURRENT. The patches work for me, but I am absolutely sure there is better way to do this, especially for the ptrace part. The first issue was 100% CPU usage on start with no progress. Turned out that the app was expecting TracerPid field in its /proc/pid/status, so just adding "sbuf_printf(sb, "TracerPid:\t%d\n", 0);" in linprocfs_doprocstatus solved it. The second was random segfaults in the Java code. Traced it to mangled r10 in the sigreturn path. Just preserving the r10 when returning from sigreturn resolves it. --- a/sys/amd64/linux/linux_sysvec.c +++ b/sys/amd64/linux/linux_sysvec.c @@ -228,8 +228,9 @@ linux_set_syscall_retval(struct thread *td, int error) * the syscall. So, do not clobber %rdx and %r10. */ td->td_retval[1] = frame->tf_rdx; - frame->tf_r10 = frame->tf_rcx; - + if( td->td_sa.code != LINUX_SYS_linux_rt_sigreturn ) + frame->tf_r10 = frame->tf_rcx; + cpu_set_syscall_retval(td, error); /* Restore all registers. */ So this two fixes solved my issues and was able to run/use the problematic application. The ptrace code is lot more messy, and I am really not happy with it, but I didn't have the time to figure out a cleaner solution. Attaching it though, as it at least might help someone to devise a better fix. Best, Yanko --0000000000008cb91f056e95ec70 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-linprocfs-return-0-TracerPid.patch" Content-Disposition: attachment; filename="0001-linprocfs-return-0-TracerPid.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jie9qaa40 RnJvbSA4MDk1N2VhZmY5ZGYyNTY3ZTJkNWJiNWI5ZTczYWZjMzk3ZTRkNGFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZYW5rbyBZYW5rdWxvdiA8eWFua28ueWFua3Vsb3ZAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDE4IDEwOjQ0OjIyICswMzAwClN1YmplY3Q6IFtQQVRD SCAxLzNdIGxpbnByb2NmczogcmV0dXJuIDAgVHJhY2VyUGlkCgotLS0KIHN5cy9jb21wYXQvbGlu cHJvY2ZzL2xpbnByb2Nmcy5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykK CmRpZmYgLS1naXQgYS9zeXMvY29tcGF0L2xpbnByb2Nmcy9saW5wcm9jZnMuYyBiL3N5cy9jb21w YXQvbGlucHJvY2ZzL2xpbnByb2Nmcy5jCmluZGV4IDU4NjI1OWYyODMxNS4uMzFkYzRjNGFiMjUy IDEwMDY0NAotLS0gYS9zeXMvY29tcGF0L2xpbnByb2Nmcy9saW5wcm9jZnMuYworKysgYi9zeXMv Y29tcGF0L2xpbnByb2Nmcy9saW5wcm9jZnMuYwpAQCAtODA1LDYgKzgwNSw3IEBAIGxpbnByb2Nm c19kb3Byb2NzdGF0dXMoUEZTX0ZJTExfQVJHUykKIAlzYnVmX3ByaW50ZihzYiwgIlBpZDpcdCVk XG4iLAkJcC0+cF9waWQpOwogCXNidWZfcHJpbnRmKHNiLCAiUFBpZDpcdCVkXG4iLAkJcC0+cF9w cHRyID8KIAkJCQkJCXAtPnBfcHB0ci0+cF9waWQgOiAwKTsKKwlzYnVmX3ByaW50ZihzYiwgIlRy YWNlclBpZDpcdCVkXG4iLAkwKTsKIAlzYnVmX3ByaW50ZihzYiwgIlVpZDpcdCVkICVkICVkICVk XG4iLAlwLT5wX3VjcmVkLT5jcl9ydWlkLAogCQkJCQkJcC0+cF91Y3JlZC0+Y3JfdWlkLAogCQkJ CQkJcC0+cF91Y3JlZC0+Y3Jfc3Z1aWQsCi0tIAoyLjE3LjEKCg== --0000000000008cb91f056e95ec70 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-linuxlator-enable-ptrace.patch" Content-Disposition: attachment; filename="0002-linuxlator-enable-ptrace.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jie9qaar1 RnJvbSBiYTAwMDExMGNmMTAxNGY1ODlmZTUyZjkzNmUxMmFkNWFjNDY0NTYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZYW5rbyBZYW5rdWxvdiA8eWFua28ueWFua3Vsb3ZAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDE4IDEwOjQ5OjA2ICswMzAwClN1YmplY3Q6IFtQQVRD SCAyLzNdIGxpbnV4bGF0b3I6IGVuYWJsZSBwdHJhY2UKCi0tLQogc3lzL2NvbXBhdC9saW51eC9s aW51eF9mb3JrLmMgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogc3lz L2tlcm4va2Vybl9mb3JrLmMgICAgICAgICAgfCAyMiArKysrKysrKysrLS0tLS0tLS0tCiAyIGZp bGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3N5cy9jb21wYXQvbGludXgvbGludXhfZm9yay5jIGIvc3lzL2NvbXBhdC9saW51eC9saW51 eF9mb3JrLmMKaW5kZXggOWRkYTQ1N2U4NDgxLi5mM2QwNjc1OTQ1MDIgMTAwNjQ0Ci0tLSBhL3N5 cy9jb21wYXQvbGludXgvbGludXhfZm9yay5jCisrKyBiL3N5cy9jb21wYXQvbGludXgvbGludXhf Zm9yay5jCkBAIC00MCw2ICs0MCw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRl IDxzeXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9tdXRleC5oPgogI2luY2x1ZGUgPHN5cy9wcm9j Lmg+CisjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgogI2luY2x1ZGUgPHN5cy9yYWNjdC5oPgogI2lu Y2x1ZGUgPHN5cy9zY2hlZC5oPgogI2luY2x1ZGUgPHN5cy9zeXNjYWxsc3Vici5oPgpAQCAtOTYs NyArOTcsMTcgQEAgbGludXhfZm9yayhzdHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGxpbnV4X2Zv cmtfYXJncyAqYXJncykKIAlURF9TRVRfQ0FOX1JVTih0ZDIpOwogCXNjaGVkX2FkZCh0ZDIsIFNS UV9CT1JJTkcpOwogCXRocmVhZF91bmxvY2sodGQyKTsKLQorCQorCVBST0NfTE9DSyhwMik7CisJ LyoKKwkgKiBXYWl0IHVudGlsIGRlYnVnZ2VyIGlzIGF0dGFjaGVkIHRvIGNoaWxkLgorCSAqLwor CXdoaWxlICh0ZDItPnRkX3Byb2MgPT0gcDIgJiYgKHRkMi0+dGRfZGJnZmxhZ3MgJiBUREJfU1RP UEFURk9SSykgIT0gMCkKKwkJY3Zfd2FpdCgmcDItPnBfZGJnd2FpdCwgJnAyLT5wX210eCk7CisJ X1BSRUxFKHAyKTsKKwlyYWNjdF9wcm9jX2ZvcmtfZG9uZShwMik7CisJUFJPQ19VTkxPQ0socDIp OworCQogCXJldHVybiAoMCk7CiB9CiAKQEAgLTEzMiw3ICsxNDMsMTkgQEAgbGludXhfdmZvcmso c3RydWN0IHRocmVhZCAqdGQsIHN0cnVjdCBsaW51eF92Zm9ya19hcmdzICphcmdzKQogCVREX1NF VF9DQU5fUlVOKHRkMik7CiAJc2NoZWRfYWRkKHRkMiwgU1JRX0JPUklORyk7CiAJdGhyZWFkX3Vu bG9jayh0ZDIpOworCQorCVBST0NfTE9DSyhwMik7CisJLyoKKwkgKiBXYWl0IHVudGlsIGRlYnVn Z2VyIGlzIGF0dGFjaGVkIHRvIGNoaWxkLgorCSAqLworCXdoaWxlICh0ZDItPnRkX3Byb2MgPT0g cDIgJiYgKHRkMi0+dGRfZGJnZmxhZ3MgJiBUREJfU1RPUEFURk9SSykgIT0gMCkKKwkJY3Zfd2Fp dCgmcDItPnBfZGJnd2FpdCwgJnAyLT5wX210eCk7CisJX1BSRUxFKHAyKTsKKwlyYWNjdF9wcm9j X2ZvcmtfZG9uZShwMik7CisJUFJPQ19VTkxPQ0socDIpOworCQogCisJCiAJcmV0dXJuICgwKTsK IH0KIApAQCAtMjUxLDcgKzI3NCwxNyBAQCBsaW51eF9jbG9uZV9wcm9jKHN0cnVjdCB0aHJlYWQg KnRkLCBzdHJ1Y3QgbGludXhfY2xvbmVfYXJncyAqYXJncykKIAlURF9TRVRfQ0FOX1JVTih0ZDIp OwogCXNjaGVkX2FkZCh0ZDIsIFNSUV9CT1JJTkcpOwogCXRocmVhZF91bmxvY2sodGQyKTsKLQor CQorCVBST0NfTE9DSyhwMik7CisJLyoKKwkgKiBXYWl0IHVudGlsIGRlYnVnZ2VyIGlzIGF0dGFj aGVkIHRvIGNoaWxkLgorCSAqLworCXdoaWxlICh0ZDItPnRkX3Byb2MgPT0gcDIgJiYgKHRkMi0+ dGRfZGJnZmxhZ3MgJiBUREJfU1RPUEFURk9SSykgIT0gMCkKKwkJY3Zfd2FpdCgmcDItPnBfZGJn d2FpdCwgJnAyLT5wX210eCk7CisJX1BSRUxFKHAyKTsKKwlyYWNjdF9wcm9jX2ZvcmtfZG9uZShw Mik7CisJUFJPQ19VTkxPQ0socDIpOworCQogCXRkLT50ZF9yZXR2YWxbMF0gPSBwMi0+cF9waWQ7 CiAKIAlyZXR1cm4gKDApOwpAQCAtMzUwLDYgKzM4Myw5IEBAIGxpbnV4X2Nsb25lX3RocmVhZChz dHJ1Y3QgdGhyZWFkICp0ZCwgc3RydWN0IGxpbnV4X2Nsb25lX2FyZ3MgKmFyZ3MpCiAJdGhyZWFk X3VubG9jayh0ZCk7CiAJaWYgKFBfU0hPVUxEU1RPUChwKSkKIAkJbmV3dGQtPnRkX2ZsYWdzIHw9 IFRERl9BU1RQRU5ESU5HIHwgVERGX05FRURTVVNQQ0hLOworCQorCWlmIChwLT5wX3B0ZXZlbnRz ICYgUFRSQUNFX0xXUCkKKwkJbmV3dGQtPnRkX2RiZ2ZsYWdzIHw9IFREQl9CT1JOOwogCVBST0Nf VU5MT0NLKHApOwogCiAJdGlkaGFzaF9hZGQobmV3dGQpOwpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4v a2Vybl9mb3JrLmMgYi9zeXMva2Vybi9rZXJuX2ZvcmsuYwppbmRleCBmOGViODRiMWI4ZTkuLmIx ODgzYTVhZjc2YiAxMDA2NDQKLS0tIGEvc3lzL2tlcm4va2Vybl9mb3JrLmMKKysrIGIvc3lzL2tl cm4va2Vybl9mb3JrLmMKQEAgLTc2OCwxOSArNzY4LDIxIEBAIGRvX2Zvcmsoc3RydWN0IHRocmVh ZCAqdGQsIHN0cnVjdCBmb3JrX3JlcSAqZnIsIHN0cnVjdCBwcm9jICpwMiwgc3RydWN0IHRocmVh ZCAqCiAJCXRocmVhZF91bmxvY2sodGQyKTsKIAkJaWYgKGZyLT5mcl9waWRwICE9IE5VTEwpCiAJ CQkqZnItPmZyX3BpZHAgPSBwMi0+cF9waWQ7CisJCQorCQlQUk9DX0xPQ0socDIpOworCQkvKgor CQkgKiBXYWl0IHVudGlsIGRlYnVnZ2VyIGlzIGF0dGFjaGVkIHRvIGNoaWxkLgorCQkgKi8KKwkJ d2hpbGUgKHRkMi0+dGRfcHJvYyA9PSBwMiAmJiAodGQyLT50ZF9kYmdmbGFncyAmIFREQl9TVE9Q QVRGT1JLKSAhPSAwKQorCQkJY3Zfd2FpdCgmcDItPnBfZGJnd2FpdCwgJnAyLT5wX210eCk7CisJ CV9QUkVMRShwMik7CisJCXJhY2N0X3Byb2NfZm9ya19kb25lKHAyKTsKKwkJUFJPQ19VTkxPQ0so cDIpOwogCX0gZWxzZSB7CiAJCSpmci0+ZnJfcHJvY3AgPSBwMjsKIAl9Ci0KLQlQUk9DX0xPQ0so cDIpOwotCS8qCi0JICogV2FpdCB1bnRpbCBkZWJ1Z2dlciBpcyBhdHRhY2hlZCB0byBjaGlsZC4K LQkgKi8KLQl3aGlsZSAodGQyLT50ZF9wcm9jID09IHAyICYmICh0ZDItPnRkX2RiZ2ZsYWdzICYg VERCX1NUT1BBVEZPUkspICE9IDApCi0JCWN2X3dhaXQoJnAyLT5wX2RiZ3dhaXQsICZwMi0+cF9t dHgpOwotCV9QUkVMRShwMik7Ci0JcmFjY3RfcHJvY19mb3JrX2RvbmUocDIpOwotCVBST0NfVU5M T0NLKHAyKTsKKwkKKwkKIH0KIAogaW50Ci0tIAoyLjE3LjEKCg== --0000000000008cb91f056e95ec70 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-linuxlator-amd64-don-t-mangle-r10-on-sigreturn.patch" Content-Disposition: attachment; filename="0003-linuxlator-amd64-don-t-mangle-r10-on-sigreturn.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jie9qab02 RnJvbSBjN2Y5YzUwNTgxMDFmM2M1M2Y1N2MzYzFhNTVkOGE4ODIzMWEyNDM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZYW5rbyBZYW5rdWxvdiA8eWFua28ueWFua3Vsb3ZAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDE0IEp1biAyMDE4IDExOjAyOjU2ICswMzAwClN1YmplY3Q6IFtQQVRD SCAzLzNdIGxpbnV4bGF0b3IvYW1kNjQ7IGRvbid0IG1hbmdsZSByMTAgb24gc2lncmV0dXJuCgot LS0KIHN5cy9hbWQ2NC9saW51eC9saW51eF9zeXN2ZWMuYyB8IDUgKysrLS0KIDEgZmlsZSBjaGFu Z2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3lzL2Ft ZDY0L2xpbnV4L2xpbnV4X3N5c3ZlYy5jIGIvc3lzL2FtZDY0L2xpbnV4L2xpbnV4X3N5c3ZlYy5j CmluZGV4IGNkNWM4YmQzODJkYy4uMjA3N2I2MjM4NzZjIDEwMDY0NAotLS0gYS9zeXMvYW1kNjQv bGludXgvbGludXhfc3lzdmVjLmMKKysrIGIvc3lzL2FtZDY0L2xpbnV4L2xpbnV4X3N5c3ZlYy5j CkBAIC0yMjgsOCArMjI4LDkgQEAgbGludXhfc2V0X3N5c2NhbGxfcmV0dmFsKHN0cnVjdCB0aHJl YWQgKnRkLCBpbnQgZXJyb3IpCiAJICogdGhlIHN5c2NhbGwuICBTbywgZG8gbm90IGNsb2JiZXIg JXJkeCBhbmQgJXIxMC4KIAkgKi8KIAl0ZC0+dGRfcmV0dmFsWzFdID0gZnJhbWUtPnRmX3JkeDsK LQlmcmFtZS0+dGZfcjEwID0gZnJhbWUtPnRmX3JjeDsKLQorCWlmKCB0ZC0+dGRfc2EuY29kZSAh PSBMSU5VWF9TWVNfbGludXhfcnRfc2lncmV0dXJuICkKKwkJZnJhbWUtPnRmX3IxMCA9IGZyYW1l LT50Zl9yY3g7CisJCiAJY3B1X3NldF9zeXNjYWxsX3JldHZhbCh0ZCwgZXJyb3IpOwogCiAJIC8q IFJlc3RvcmUgYWxsIHJlZ2lzdGVycy4gKi8KLS0gCjIuMTcuMQoK --0000000000008cb91f056e95ec70--