Ticket #23 (new enhancement)
pop3-pluging blocks on read
| Reported by: | whaslbeck@… | Owned by: | michael |
|---|---|---|---|
| Priority: | normal | Component: | lcd4linux |
| Version: | 0.1 | Severity: | normal |
| Keywords: | Cc: |
Description
I discovered that lcd4linux stops updating the display after some time (about 2 or 3 days). I've done some resarch and discoverd that lcd4linux hangs inside the pop3-plugin. After attaching gdb to the running process, I get the following stacktrace:
(gdb) bt #0 0xb7d832ce in read () from /lib/tls/libc.so.6 #1 0x08058ac3 in pop3_recv_crlf_terminated (sockfd=8, buf=0xbfc6a9c0 "", size=8192) at plugin_pop3.c:234 #2 0x08058d44 in my_POP3check (result=0x806d8d0, check=0x806d908) at plugin_pop3.c:188 #3 0x0804d72d in EvalTree (Root=0x806d8b0) at evaluator.c:1085 #4 0x0804ddd7 in Eval (tree=0x806d8b0, result=0xbfc6cb34) at evaluator.c:1294 #5 0x08050230 in widget_text_update (Self=0x8077230) at widget_text.c:280 #6 0x0804f066 in timer_process (delay=0xbfc6cbf0) at timer.c:196 #7 0x0804adbb in main (argc=4, argv=0xbfc6cc94) at lcd4linux.c:684
when I set the stackframe up to my_POP3check() and return to the application, the applicaton continues running.
So I think the read() inside pop3_recv_crlf_terminated() should be nonblocking/timeout'ed (with select() or poll()).
Regards, Walter
Attachments
Change History
Note: See
TracTickets for help on using
tickets.
