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