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