Il 28/08/2012 23:10, Holger Hans Peter Freyther ha scritto:
> 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: active
>
> 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?
Yes. Does this fix it?
diff --git a/libgst/sysdep/posix/events.c b/libgst/sysdep/posix/events.c
index da3a784..8c864ec 100644
--- a/libgst/sysdep/posix/events.c
+++ b/libgst/sysdep/posix/events.c
@@ -395,6 +395,8 @@ _gst_async_file_polling (int fd,
polling_queue *new;
index = num_used_pollfds++;
+ set_file_interrupt (fd, file_polling_handler);
+
result = _gst_sync_file_polling (fd, cond);
if (result != 0)
{
@@ -431,8 +433,6 @@ _gst_async_file_polling (int fd,
}
pollfds[index].revents = 0;
- set_file_interrupt (fd, file_polling_handler);
-
/* Even if I/O was made possible while setting up our machinery,
the list will only be walked before the next bytecode, so there
is no race. We incremented num_used_pollfds very early so that
Paolo
_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk