<div dir="ltr">To be more precise, it is in the function rops_periodic_checks_ws.<div><br></div><div>If I disable ping pong (ws_ping_pong_interval = 0), it works, as the aforementioned code is never reached.</div></div><br><div class="gmail_quote"><div dir="ltr">Le mar. 21 août 2018 à 17:01, Alfred Sawaya <<a href="mailto:alfred@huji.fr">alfred@huji.fr</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I use the last libwebsockets version (git+master)</div><br><div class="gmail_quote"><div dir="ltr">Le mar. 21 août 2018 à 17:01, Alfred Sawaya <<a href="mailto:alfred@huji.fr" target="_blank">alfred@huji.fr</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I have an issue with libwebsockets. I have done a huge refactored of a piece of software which uses libwebsockets, I used to work but now, I have a strange behaviour, 100% cpu and an infinite loop on the while loop at lib/roles/ws/ops-ws.c : 1407 :</div><div><br></div><div><div>(gdb) n</div><div>1407<span style="white-space:pre-wrap">                                 </span>if (lwsi_role_ws(wsi) &&</div><div>(gdb) </div><div>1423<span style="white-space:pre-wrap">                                       </span>wsi = wsi->same_vh_protocol_next;</div><div>(gdb) </div><div>1407<span style="white-space:pre-wrap">                                   </span>if (lwsi_role_ws(wsi) &&</div><div>(gdb) </div><div>1423<span style="white-space:pre-wrap">                                       </span>wsi = wsi->same_vh_protocol_next;</div><div>(gdb) </div><div>1407<span style="white-space:pre-wrap">                                   </span>if (lwsi_role_ws(wsi) &&</div><div>(gdb) </div><div>1423<span style="white-space:pre-wrap">                                       </span>wsi = wsi->same_vh_protocol_next;</div><div>(gdb) </div><div>1407<span style="white-space:pre-wrap">                                   </span>if (lwsi_role_ws(wsi) &&</div><div>(gdb) </div><div>1423<span style="white-space:pre-wrap">                                       </span>wsi = wsi->same_vh_protocol_next;</div><div>(gdb) </div><div>1407<span style="white-space:pre-wrap">                                   </span>if (lwsi_role_ws(wsi) &&</div><div>(gdb) </div><div>1423<span style="white-space:pre-wrap">                                       </span>wsi = wsi->same_vh_protocol_next;</div></div><div><br></div><div>if I do : set  wsi->same_vh_protocol_next = NULL; </div><div>Then it works as attended.</div><div><br></div><div>In the code that set wsi->same_vh_protocol_next (lib/roles/ws/client-ws.c : 382), the wsi->same_vh_protocol_next is set to wsi, but I think it should be NULL otherwise while(wsi) loop cannot break, isn't it ?</div><div><br></div><div>Or I have missed something?</div><div><br></div><div>Thank you,</div><div>Alfred</div></div>-- <br><div dir="ltr" class="m_-3324871211105294239gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Cordialement,</div><div>Alfred Sawaya</div></div></div></blockquote></div>-- <br><div dir="ltr" class="m_-3324871211105294239gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Cordialement,</div><div>Alfred Sawaya</div></div></div>
</blockquote></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Cordialement,</div><div>Alfred Sawaya</div></div></div>