[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-smalltalk] [bug] async signal queue can miss events
From: |
Holger Hans Peter Freyther |
Subject: |
Re: [Help-smalltalk] [bug] async signal queue can miss events |
Date: |
Mon, 19 Nov 2012 08:02:54 -0700 |
Issue status update for
http://smalltalk.gnu.org/project/issue/651
Post a follow up:
http://smalltalk.gnu.org/project/comments/add/651
Project: GNU Smalltalk
Version: <none>
Component: VM
Category: bug reports
Priority: normal
Assigned to: Unassigned
Reported by: zecke
Updated by: zecke
Status: fixed
The 23:00 analysis... and hypothesis...
_gst_async_file_polling
1.) check for polling...
2.) new data arrives
3.) re-alloc
4.) set_filter_interrupt...
It has been some time bit SIGIO/fasync is just edge triggered? isn't it?
Strace with success:
socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(3002),
sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in
progress)
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
getpeername(4, {sa_family=AF_INET, sin_port=htons(3002),
sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}])
poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}])
poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}])
poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}])
recvfrom(4, "\0\21\376\4\1\10\1\7\1\2\1\3\1\4\1\5\1\1\1\0", 1024, 0,
NULL, NULL) = 20
close(4)
Strace with failure:
socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 4
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(3002),
sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in
progress)
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
getpeername(4, {sa_family=AF_INET, sin_port=htons(3002),
sin_addr=inet_addr("127.0.0.1")}, [16]) = 0
poll([{fd=4, events=POLLIN}], 1, 0) = 0 (Timeout)
fcntl64(4, F_GETFL) = 0x802 (flags
O_RDWR|O_NONBLOCK)
fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK|O_ASYNC) = 0
fcntl64(4, F_SETOWN, 22087) = 0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Help-smalltalk] [bug] async signal queue can miss events,
Holger Hans Peter Freyther <=