I'm writing a simple application that makes use of libuv event loop to do
asynchronous event handling.
Following is my program
// includes
uv_fs_t open_req;
uv_loop_t * my_default_loop;
uv_poll_t * file_poll;
void read_callback( uv_poll_t * handle, int status, int events)
{
if(!status)
printf("There is some data for reading");
else
printf("nothing to read");
}
int main() {
int fd;
file_poll = (uv_poll_t *)malloc(sizeof(uv_poll_t));
my_default_loop = uv_default_loop();
uv_loop_init(my_default_loop);
my_default_loop->data = NULL;
fd=open("poll.txt", O_RDONLY);
printf("FD : %d",fd);
uv_run(my_default_loop, UV_RUN_DEFAULT);
uv_poll_init(my_default_loop, file_poll, fd);
uv_poll_start(file_poll, UV_READABLE, read_callback);
uv_fs_req_cleanup(&open_req);
return 0;
}
I followed the API documentation on uv_poll_t
<http://docs.libuv.org/en/v1.x/poll.html>[1] - Poll Handle and wrote this
demo program.
My demo program tries to monitor a file called poll.txt. And should output
if there is any data to be read.
This is the error I get when I execute my program
[1] 18320 segmentation fault ./test
Here's the GDB output when I run the program
Program received signal SIGSEGV, Segmentation fault.
uv__io_stop (loop=0x0, w=w@entry=0x61d078, events=events@entry=8197) at
../src/unix/core.c:878
878 if ((unsigned) w->fd >= loop->nwatchers)
Here's the GDB Backtrace
#0 uv__io_stop (loop=0x0, w=w@entry=0x61d078,
events=events@entry=8197) at ../src/unix/core.c:878
#1 0x000000000040b0b7 in uv__poll_stop (handle=0x61d010) at
../src/unix/poll.c:80
#2 uv_poll_start (handle=0x61d010, pevents=1, poll_cb=0x4038d0
<read_callback>) at ../src/unix/poll.c:100
#3 0x00000000004039c0 in main () at test.c:33
*Can any one point me where I am doing wrong with the setup and usage ?*
[1]: http://docs.libuv.org/en/v1.x/poll.html
--
You received this message because you are subscribed to the Google Groups
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.