Crash in g_file_monitor on 32-bit Cygwin

Ken Brown kbrown@cornell.edu
Fri Jun 27 17:11:00 GMT 2014


On 6/25/2014 10:17 PM, Ken Brown wrote:
> This is a followup to https://cygwin.com/ml/cygwin/2014-06/msg00324.html, from which I extracted the following test case:
>
> $ cat gfile-test.c
> #include <stdio.h>
> #include <gio/gio.h>
>
> void
> 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);
>    else
>      printf ("Watching file %s\n", file);
> }
>
> int
> 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

   http://sanibeltranquility.com/cygwin/

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

Yaakov, could you take a look?

Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list