I believe threadnotify() should be called from threadmain() to
properly register the handler in the rendez group.

On Fri, Jun 17, 2022 at 5:39 AM <andrey100100...@gmail.com> wrote:
> 
> Hi all!
> 
> Strange behavior of syscall 'read' with signal 'alarm' in followed
> simple program (ip/port - not matter):
> 
> -----------------------------------------------------------------------
> #include <u.h>
> #include <libc.h>
> #include <thread.h>
> 
> 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[] = "request";
>         int fd;
> 
> threadnotify(handler_alarm, 1);
> 
> if((fd = dial("udp!185.157.221.201!5678", nil, nil, nil)) >=
> 0){
>         if(write(fd, req, strlen(req)) == 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 = 5242880;
> 
> void
> threadmain(int argc, char *argv[])
> {
>         for(int i = 0; i < 80; i++){
>                 proccreate(proc_udp, nil, 10240);
>         }
> 
> sleep(5000);
> threadexitsall(nil);
> }
> -----------------------------------------------------------------------
> 
> cpu% 6.out | grep end | wc -l
>      33
> 
> sometimes little more or less
> but
> 
> cpu% 6.out | grep start | wc -l
>      80
> 
> always.
> 
> Testing on Miller's RPi and 9front (amd64 & RPi 2)
> 
> Why does read() kill process?
> Why not always?
> Why number of 'ended' processes arond 33?
> This is normal behavior?
> How to fix the program so that the processes do not lost?
> 
> Can someone point me in the right direction?
> 
> Thanks!
> Andrey

------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/Tfa6823048ad90a21-M799a747eed5b007fc4d07fbe
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to