This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Crash in g_file_monitor on 32-bit Cygwin

On 6/25/2014 10:17 PM, Ken Brown wrote:
This is a followup to, from which I extracted the following test case:

$ cat gfile-test.c
#include <stdio.h>
#include <gio/gio.h>

gfile_add_watch (const char *file)
   GFile *gfile = g_file_new_for_path (file);
   GFileMonitor *monitor;
   GFileMonitorFlags gflags = G_FILE_MONITOR_NONE;
   monitor = g_file_monitor (gfile, gflags, NULL, NULL);
   if (! monitor)
     printf ("Can't watch file %s\n", file);
     printf ("Watching file %s\n", file);

main ()
   const char *file = "gfile-test.c";
   gfile_add_watch (file);

$ gcc -g -O0 -o gfile-test $(pkg-config --cflags gio-2.0) gfile-test.c $(pkg-config --libs gio-2.0)

In the 64-bit case, this behaves as expected:

$ ./gfile-test.exe
Watching file gfile-test.c

In the 32-bit case, however, it crashes.  Running it under gdb shows
that the call to g_file_monitor leads to a SEGV, but I can't tell
exactly where; when I try to single step through the Glib code, I
eventually hit an assertion violation in gdb.  strace shows lots of
exceptions, but I can't make much sense out of it otherwise.

I rebuilt glib and gamin without optimization so that I could step through the code in gdb. But stepping through the code turned out to be unnecessary, because the bug was gone after the rebuilds. I don't know if optimization was really the issue or whether just rebuilding with the latest tools is what fixed it.

My builds can be obtained from

if anyone else wants to try to reproduce this without rebuilding the packages themselves.

Yaakov, could you take a look?


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]