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=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H2,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 22070 invoked from network); 20 Jun 2022 22:29:38 -0000 Received: from tb-ob0.topicbox.com (64.147.108.117) by inbox.vuxu.org with ESMTPUTF8; 20 Jun 2022 22:29:38 -0000 Received: from tb-mx0.topicbox.com (tb-mx0.nyi.icgroup.com [10.90.30.73]) by tb-ob0.topicbox.com (Postfix) with ESMTP id BB94933AFE for ; Mon, 20 Jun 2022 18:29:33 -0400 (EDT) (envelope-from bounce.mM99eed0ec152c6bbad2332628.r522be890-2105-11eb-b15e-8d699134e1fa@9fans.bounce.topicbox.com) Received: by tb-mx0.topicbox.com (Postfix, from userid 1132) id B9376294886D; Mon, 20 Jun 2022 18:29:33 -0400 (EDT) ARC-Authentication-Results: i=2; topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=ZOeXZMlN header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=skip.tavakkolian@gmail.com smtp.helo=mail-yw1-f171.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type:content-transfer-encoding :list-help:list-id:list-post:list-subscribe:reply-to :list-unsubscribe; s=sysmsg-1; t=1655764173; bh=sswWngFJ4LJpoM7r /cnQoJ/Za6qxSLiGiZbiN+3KvHg=; b=YVF+YgwK5x4rxCYKedmXY5g1ifwBzCtF XPv8htcDw+sFAWPS6/2GShGdCDqfdlc1T61jWleOa081zI+n7D7hu0ejnEhd7fSN 1GhZ283y5pkv0utiL9xgyf63SpDpZHtr1QCYc8oBjVkwR1aqxxiV9fhhBzowfYkT WnRhOEcWnbs= ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=topicbox.com; s=sysmsg-1; t= 1655764173; b=oEVmQqh+lfF1Ko+NP7PkREYBC9OznZ2hBJ5pqn/t8Q/anIxcto +CXdwHYw3hSuhQecKbDguRcyp1n+tOyhtozlj7NydgdKbufyKNdvYfuph9YaAQX2 g/mVopKkHm5xAEG9G+gBSBXqZe4nuGsGvPr4SeJIWXoW1+TlwQMmR/TWU= Authentication-Results: topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=ZOeXZMlN header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=skip.tavakkolian@gmail.com smtp.helo=mail-yw1-f171.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) X-Received-Authentication-Results: tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=ZOeXZMlN header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.128.171 (mail-yw1-f171.google.com); spf=pass smtp.mailfrom=skip.tavakkolian@gmail.com smtp.helo=mail-yw1-f171.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=PT/vL9GK; x-me-sender=none; x-ptr=pass smtp.helo=mail-yw1-f171.google.com policy.ptr=mail-yw1-f171.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=0 state=0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=9fans.net; h= mime-version:references:in-reply-to:from:date:message-id:subject :to:content-type:content-transfer-encoding:list-help:list-id :list-post:list-subscribe:reply-to:list-unsubscribe; s=dkim-1; t=1655764173; x=1655850573; bh=3WuMTL6iS6o8ji5psmj215/hMqNHtody lyLDzqLPYbU=; b=gMxWJTlaSa1relECdB7/ZoKCyqfxBP1CIe+g5be8KKu2MTxg DtMzStEpXiyvqz428Xi2XFXkMlCEiULZepijZ5amDbDvpgp95tS4M5ju95Sva1K3 crXmHHak6VybGz/wiotzbMcEdKnbpc0j09Co2OQBuyOgOOy0+OrQET45OVs= Received: from tb-mx1.topicbox.com (localhost.local [127.0.0.1]) by tb-mx1.topicbox.com (Postfix) with ESMTP id DBF08156EA49 for <9fans@9fans.net>; Mon, 20 Jun 2022 18:29:15 -0400 (EDT) (envelope-from skip.tavakkolian@gmail.com) Received: from tb-mx1.topicbox.com (localhost [127.0.0.1]) by tb-mx1.topicbox.com (Authentication Milter) with ESMTP id 71A09A9BB2E; Mon, 20 Jun 2022 18:29:15 -0400 ARC-Seal: i=1; a=rsa-sha256; cv=none; d=topicbox.com; s=arcseal; t= 1655764155; b=D0K73ZWYVM6lHQ70UXfAaL4h4hmTCrHy/ucEuzHh/d7oYxtDOb odP7PbDAz4FLUsrtJYLI9qMlv19psq+Ym9Wn2JtY+8G+UdXvwreq07Cr6UtZ1Yo0 tfn2kuld2EeB8i0Zg5DcgdKdJQt6Q4Bsp7rLZ3/Cz4sEyXATywKmZk2HYWw43aAm 7g6iKc81ER5L7FiQCEmnMI25D8baMIbDpAhQB94ruhfIMJho4b9ZYHoAg5feJZne vzg3+1mBKtyLn7B+mff9baYcXO5qvldZ2HAOyUXgWUExaW6ZG9IGB3yoxDgGzx2j MawuqQN413qNcNnzRFPH2ja3h7MAZBgMt6bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type:content-transfer-encoding; s=arcseal; t=1655764155; bh=Ck0YnIW/kzU5utczTxHsuKEFMgjhjoROJbq kpY3AN78=; b=r5qo4MH87MtNM5t099s1IfVoPuENb5qyWfDqWz7gXsHZN3D3wRe 8njfWAW9JgDQ2/KBau5kD06DrBA+Q1ey2Fo1bfEJpusx9gswVDfucxGH3RyWq7nW x1Co2SZR+NHJsWu0ofl8UAq/g6yFrUf/aQ7vZ8dywvG2y0dZKLDFJ9LGXtU3AmJ1 n6cb6F7MDBhRJApSa4RvEP8t7qGQP269P93VeYrGoiRr7JBkFkrggwZFq2Vkegaf xiUA8M/Xwp8h+uAHccrVexrgWh9DiN1xnjw8XMsRvsSFQTUrhyNYFZZSIIGgxrjt yGIexUKhUY6hBxNqMcLZbjBWPTDDgcSq5BA== ARC-Authentication-Results: i=1; tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=ZOeXZMlN header.a=rsa-sha256 header.s=20210112 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.128.171 (mail-yw1-f171.google.com); spf=pass smtp.mailfrom=skip.tavakkolian@gmail.com smtp.helo=mail-yw1-f171.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=PT/vL9GK; x-me-sender=none; x-ptr=pass smtp.helo=mail-yw1-f171.google.com policy.ptr=mail-yw1-f171.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=0 state=0 X-ME-VSCause: gggruggvucftvghtrhhoucdtuddrgedvfedrudefvddgtdehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpeggfhgjhf ffkffuvfgtgfesthhqredttddtjeenucfhrhhomhepufhkihhpucfvrghvrghkkhholhhi rghnuceoshhkihhprdhtrghvrghkkhholhhirghnsehgmhgrihhlrdgtohhmqeenucggtf frrghtthgvrhhnpeffgeffiefhffdtvedtfeduheehfeeijeevhfegieefveeguddujeff uedtgeevkeenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhtohhpihgtsghogidrtg homhenucfkphepvddtledrkeehrdduvdekrddujedunecuvehluhhsthgvrhfuihiivgep tdenucfrrghrrghmpehinhgvthepvddtledrkeehrdduvdekrddujedupdhhvghlohepmh grihhlqdihfiduqdhfudejuddrghhoohhglhgvrdgtohhmpdhmrghilhhfrhhomhepoehs khhiphdrthgrvhgrkhhkohhlihgrnhesghhmrghilhdrtghomheq X-ME-VSScore: 0 X-ME-VSCategory: clean Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use 'skip.tavakkolian@gmail.com' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=tb-mx1.topicbox.com; identity=mailfrom; envelope-from="skip.tavakkolian@gmail.com"; helo=mail-yw1-f171.google.com; client-ip=209.85.128.171 Received: from mail-yw1-f171.google.com (mail-yw1-f171.google.com [209.85.128.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tb-mx1.topicbox.com (Postfix) with ESMTPS for <9fans@9fans.net>; Mon, 20 Jun 2022 18:29:15 -0400 (EDT) (envelope-from skip.tavakkolian@gmail.com) Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-3177e60d980so92083527b3.12 for <9fans@9fans.net>; Mon, 20 Jun 2022 15:29:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=Ck0YnIW/kzU5utczTxHsuKEFMgjhjoROJbqkpY3AN78=; b=PT/vL9GKcrga68+i8C+iFBkRT8Jxp0Cb2cSWhzd2Jr+Jmed+VnBcLsUa3UKS7zslme 0RqqF0ubz37Bq/vwii1d5+xnFfT4+aegP7T5s++TWRAE9QPRSEXgtDqvLBumyEQ0Wnxh IKEa9Kj9vboEhz8Jw3Vu268tvvrLv1SvhdSfu8CIj+TuKHn/RmkO/73L1X+vEyDGNU/D ToinVbHUftq5OFr8baQ8Q8M3WhgEfE6OjxYQZ+oUXOFMKaji4CfDCsf9T/v8/Ai/ZeQi Lec6H6ljYNC+GeZ+4rxLstnh0IaFHheI1XcF+qPdvUABrLEed4tvinlg65WQR9zWj41L 7X/Q== X-Gm-Message-State: AJIora9PikJ3svGS+pytbNnEt4/1H1KJY+G2CT+gpamBe2YXW9swlvUx ZwAnxGSWbPRlEWnbShihv8KKLcC/uXHRul1sGUFvqQu9qaY= X-Google-Smtp-Source: AGRyM1s5HHxaRglduM8hYQJ2ydepZoGPWrL2LFibmwJQFSmtDz/+Vm5qbrpNNcxhkuBSUVx5ctHXlddlUTIZVcfv/w0= X-Received: by 2002:a0d:eace:0:b0:317:87ac:b3a8 with SMTP id t197-20020a0deace000000b0031787acb3a8mr20452324ywe.126.1655764154395; Mon, 20 Jun 2022 15:29:14 -0700 (PDT) MIME-Version: 1.0 References: <2b857fe-c6df-a6b8-40ec-566c85b7377d@SDF.ORG> In-Reply-To: From: Skip Tavakkolian Date: Mon, 20 Jun 2022 15:29:02 -0700 Message-ID: Subject: Re: [9fans] syscall silently kill processes To: 9fans <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Topicbox-Policy-Reasoning: allow: sender is a member Topicbox-Message-UUID: 6dbb9b6e-f0e8-11ec-811c-da60ef804414 Archived-At: =?UTF-8?B?PGh0dHBzOi8vOWZhbnMudG9waWNib3guY29tL2dyb3Vwcy85?= =?UTF-8?B?ZmFucy9UZmE2ODIzMDQ4YWQ5MGEyMS1NOTllZWQwZWMxNTJjNmJiYWQyMzMy?= =?UTF-8?B?NjI4Pg==?= List-Help: List-Id: "9fans" <9fans.9fans.net> List-Post: List-Software: Topicbox v0 List-Subscribe: Precedence: list Reply-To: 9fans <9fans@9fans.net> List-Unsubscribe: , Topicbox-Delivery-ID: 2:9fans:437d30aa-c441-11e9-8a57-d036212d11b0:522be890-2105-11eb-b15e-8d699134e1fa:M99eed0ec152c6bbad2332628:1:b-MSukABdEDRzFBdScOZc7bTv4tmRQPyFyjSxDD606E It's cleaner to use channels with separate io and timer threads that do their syscalls via ioproc; this one doesn't require any changes to libth= read: https://gist.github.com/9nut/aaa9b9b6a22d69996b75ccdc6e615c61 On Mon, Jun 20, 2022 at 8:57 AM wrote: > > =D0=92 =D0=9F=D0=BD, 20/06/2022 =D0=B2 05:59 +0000, adr =D0=BF=D0=B8=D1= =88=D0=B5=D1=82: > > On Mon, 20 Jun 2022, adr wrote: > > > But I have something in mind for a case like > > > this, when all the processes are going to use the same handler > > > (that's why I was asking). Let me play with it a litle before I > > > share it. > > > > Ok, the idea is this: If in is bigger than zero in > > threadnotify(int (*f)(void*, char*), int in), the handler is register > > for the calling process. If in is 0, then the handler is cleared > > for the calling process. If in is -1, the handler is register for > > all processes and if in is less than -1, it is cleared for all > > processes (expect for those who have already registered it for > > themselves). > > > > Now back to your example, as all the processes are going to use the > > same handler, > > you just have to register it once in threadmain: > > > > #include > > #include > > #include > > > > static int > > handler_alarm(void *, char *msg) > > { > > if(strstr(msg, "alarm")) > > return 1; > > return 0; > > } > > > > static void > > proc_udp(void *) > > { > > char resp[512]; > > char req[] =3D "request"; > > int fd; > > if((fd =3D dial("udp!185.157.221.201!5678", nil, nil, nil)) >=3D > > 0){ > > if(write(fd, req, strlen(req)) =3D=3D strlen(req)){ > > fprint(1, "start\n"); > > alarm(2000); > > read(fd, resp, sizeof(resp)); > > alarm(0); > > fprint(1, "end\n"); > > } > > close(fd); > > } > > threadexits(nil); > > } > > > > int mainstacksize =3D 5242880; > > > > void > > threadmain(int argc, char *argv[]) > > { > > threadnotify(handler_alarm, -1); > > for(int i =3D 0; i < 80; i++) > > proccreate(proc_udp, nil, 10240); > > sleep(5000); > > threadexitsall(nil); > > } > > Now, > > ; ./5.out | grep end | wc -l > > 80 > > > > Are you happy Andrej? > > > Yes. Thank you very much! It's working! > > How convenient it is to use - more experiments are needed. > > > > > > adr. > > > > /sys/src/libthread/sched.c: > > [...] > > if(t =3D=3D nil){ > > _threaddebug(DBGSCHED, "all threads gone; > > exiting"); > > cancelnotes(p->pid); > > _schedexit(p); > > } > > [...] > > /sys/src/libthread/note.c > > [...] > > int > > threadnotify(int (*f)(void*, char*), int in) > > { > > int i, frompid, topid; > > int (*from)(void*, char*), (*to)(void*, char*); > > > > if(in && in>-2){ > > from =3D nil; > > frompid =3D 0; > > to =3D f; > > topid =3D (in =3D=3D -1)? -1 : _threadgetproc()->pid; > > lock(&onnotelock); > > for(i=3D0; i > if(onnote[i]=3D=3Dto && onnotepid[i]=3D=3Dtopid= ){ > > unlock(&onnotelock); > > return i > } > > unlock(&onnotelock); > > }else{ > > from =3D f; > > frompid =3D (in < -1)? -1 : _threadgetproc()->pid; > > to =3D nil; > > topid =3D 0; > > } > > lock(&onnotelock); > > for(i=3D0; i > if(onnote[i]=3D=3Dfrom && onnotepid[i]=3D=3Dfrompid){ > > onnote[i] =3D to; > > onnotepid[i] =3D topid; > > break; > > } > > unlock(&onnotelock); > > return i > } > > > > void > > cancelnotes(int pid) > > { > > int i; > > > > lock(&onnotelock); > > for(i=3D0; i > if(onnotepid[i] =3D=3D pid){ > > onnote[i] =3D nil; > > onnotepid[i] =3D 0; > > } > > unlock(&onnotelock); > > return; > > } > > > > static void > > delayednotes(Proc *p, void *v) > > { > > int i; > > Note *n; > > int (*fn)(void*, char*); > > > > if(!p->pending) > > return; > > > > p->pending =3D 0; > > for(n=3Dnotes; n > if(n->proc =3D=3D p){ > > for(i=3D0; i > if((onnotepid[i]!=3Dp->pid && > > onnotepid[i]!=3D-1) || (fn =3D onnote[i])=3D=3Dnil) > > continue; > > if((*fn)(v, n->s)) > > break; > > [...] > > /sys/include/thread.h > > [...] > > void cancelnotes(int pid); > > [...] > > >=20 > Regards, > Andrej ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/Tfa6823048ad90a21-M99eed= 0ec152c6bbad2332628 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription