Crash in g_file_monitor on 32-bit Cygwin

Yaakov Selkowitz yselkowitz@cygwin.com
Fri Jun 27 17:52:00 GMT 2014


On 2014-06-27 12:11, Ken Brown wrote:
> 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?

Sure.  Are you narrow this down to only one of glib or gamin?


Yaakov



--
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