From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 22846 invoked from network); 8 May 2022 17:40:22 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 8 May 2022 17:40:22 -0000 Received: from mail-lj1-f181.google.com ([209.85.208.181]) by 9front; Sun May 8 13:38:34 -0400 2022 Received: by mail-lj1-f181.google.com with SMTP id v4so14616852ljd.10 for <9front@9front.org>; Sun, 08 May 2022 10:38:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=uv1g8BLHRpHu1i0DQdsKWFeB1gjPOI77nagUySlq0Fo=; b=D8axgXJ51UI4RJ/XtUThBa43UF9xle0nyQUMg+ZC6Mh830Tpp7q/JXxGQaVSoodHiu DoTg+YsUnhGvkiZPPTEtd5eFrGZdGGl0MJE147TZTXOR1YMdlVRyesE+cOsQbL+lCpCe ZczXb9bJaC2Fb2pqFfq9zmZtU3wmfX6UhlJ6Cg1CgEfZmNfZKKHDLQiZdWVhdfQC5Jg/ UH90wbvJAqxbbLp0m0jvU1L6qUHv0STCYuzqDZ5oq0W7lM5g6fDr+Y4NR8SDRZ1gSYzr HjYApRDQ5YQ1EWFVhBE1pilGZxPofGDPD0TamO6Kn5CAANv4Y3ldk1Dsvj6br8EEHTpT qAug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=uv1g8BLHRpHu1i0DQdsKWFeB1gjPOI77nagUySlq0Fo=; b=m7tH5/dWhwp2XxWliW9aBpmmXkqsuiITCRHYRa71+HrcCaREK0ANw+DXu9AUHehsi4 9rEaHvzNLN0ZSCHNBo6TRIHK780zqpFdNgUAfHFa+hFg9k0euG/bmBFLcujdifeSoa6d 9sYStCJuZx9AVi3f1YAtRA7JUZq20N1/ERzFcuWBlrWXlIaQfTb+xGXB53je5NoAuk1L pKxM2JP1MSI3aKHmBXd1XHduIizZXapPLLaknn0mX2aq5busRx5ZHmLX35g0RaV8K4/n 2irFSaOeCNXcMhZCNXOnPlv2ZpzyEYfKozYxzosIGhxtZ2LOrqPXpzWDKXu18sm2ZgW7 vJgQ== X-Gm-Message-State: AOAM532KBiKar4GeDZhPAg1u2mVtBH9Mm8HYlgQUS0PNlQY1scrwEe5U EyAV/vizizDR3UsP6Ntsr5coaVUY0GQnXQQZ5DG4mUr7Pag= X-Google-Smtp-Source: ABdhPJwDgIm9TEoD0wm8prPMRH4mLKLuc1q84rddANUDE5IR5aLphaVOVr4QyeX7mNfbrFrYxZ5K/s4GlC5bAqqi2Vo= X-Received: by 2002:a2e:9d08:0:b0:249:b8b6:8f7a with SMTP id t8-20020a2e9d08000000b00249b8b68f7amr8157238lji.310.1652031507745; Sun, 08 May 2022 10:38:27 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:6512:3d87:0:0:0:0 with HTTP; Sun, 8 May 2022 10:38:27 -0700 (PDT) From: istvan bak Date: Sun, 8 May 2022 17:38:27 +0000 Message-ID: To: 9front <9front@9front.org> Content-Type: text/plain; charset="UTF-8" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: stable flexible property WEB2.0 over SQL hypervisor general-purpose manager Subject: [9front] exec suicide: sys: bad address in syscall Reply-To: 9front@9front.org Precedence: bulk Hello. The below program suicides on a call to fork/exec. If I made the mistake, then I can't see it. If I didn't, then I don't know how to debug the kernel(?), and I don't have time to stare at it for days on end :/. If I remove the Waitmsg, it doesn't repro. If I remove the print(""), it doesn't repro. if i inline the body, it doesn't repro. something something callstack mumble address syscall mumble. It repros on amd64, but not 386. http://sysinfo.9front.org/src/460/body term% mk 6.red 6c -FTVw red.c 6l -o 6.red red.6 term% 6.red term% 6.red 666: suicide: invalid address 0x7fff00000000/1 in sys call pc=0x200216 6.red 666: suicide: sys: bad address in syscall pc=0x200216 6.red 667: suicide: invalid address 0x7fff00000000/1 in sys call pc=0x200216 6.red 667: suicide: sys: bad address in syscall pc=0x200216 term% acid 666 /proc/666/text:amd64 plan 9 executable /sys/lib/acid/port /sys/lib/acid/amd64 acid: lstk() exec(a0=0x4009a0)+0xe /sys/src/libc/9syscall/exec.s:6 execl(f=0x4009a8)+0x13 /sys/src/libc/port/execl.c:8 rc(cmd=0x4009c1)+0x4f /usr/glenda/riv/nag/red.c:17 run()+0x19 /usr/glenda/riv/nag/red.c:29 i=0x20014500000001 main()+0x9 /usr/glenda/riv/nag/red.c:69 _main+0x40 /sys/src/libc/amd64/main9.s:15 acid: echo kill > /proc/666/ctl term% cat red.c #include #include int rc(char *cmd) { int r; Waitmsg *w; SET(w); USED(w); r = fork(); switch(r){ case -1: return -1; case 0: execl("/bin/rc", "/bin/rc", "-c", cmd, 0); sysfatal("exec returned"); } return 0; } void run(void) { int i; for(i = 0; i < 3; i++){ rc("test"); print(""); } } void run2(void) { int i; int r; Waitmsg *w; SET(w); USED(w); for(i = 0; i < 3; i++){ r = fork(); switch(r){ case -1: continue; case 0: execl("/bin/rc", "/bin/rc", "-c", "test", 0); sysfatal("exec returned"); } print(""); } } void main() { //to test: uncomment one of the below lines //reproduces on amd64, but not on 386 // this reproduces run(); // this doesnt //run2(); exits(0); }