On 6/18/2014 1:46 PM, Ken Brown wrote: > On 6/18/2014 11:06 AM, Filipp Gunbin wrote: >> I'm not sure whether this is Cygwin-specific, but I'm not able to test >> it on other OS, so here are the steps to reproduce: >> >> emacs -Q >> C-x C-r <some_file> > > You mean C-x C-f > >> M-x auto-revert-tail-mode >> wait for few seconds -> emacs crashes > > I can confirm this, but on 32-bit Cygwin only; there's no crash on > 64-bit Cygwin. (This is a refreshing change from the emacs crashes > people have been reporting on 64-bit Cygwin.) > > Here's the backtrace: > > #0 0x00000000 in ?? () > No symbol table info available. > #1 0x610f842f in pthread_mutex::lock (this=0x0) > at /usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/thread.cc:1745 > self = <optimized out> > result = <optimized out> > __PRETTY_FUNCTION__ = "int pthread_mutex::lock()" > #2 0x00000201 in ?? () > No symbol table info available. > > Lisp Backtrace: > "gfile-add-watch" (0x288dc8) > "file-notify-add-watch" (0x2890c8) > "byte-code" (0x289340) > "auto-revert-notify-add-watch" (0x289778) > "auto-revert-buffers" (0x289b4c) > "apply" (0x289b48) > "byte-code" (0x289dc0) > "timer-event-handler" (0x28a1fc) > > I'll look into this. In the meantime, you can work around it by > configuring --with-file-notification=no.
I'm afraid I ran into a brick wall trying to debug this. I wanted to see what gfile-add-watch was doing, so I ran emacs under gdb with a breakpoint at Fgfile_add_watch and then a breakpoint at g_file_monitor (a Glib function called by Fgfile_add_watch). When I tried to step through this function, I hit an assertion violation in gdb. This is repeatable. A log of the gdb session is appended below. The problem occurs only on 32-bit Cygwin. On 64-bit Cygwin, I can step through Fgfile_add_watch without a problem. Filipp, do you want to try debugging this yourself? Maybe your debugging skills are better than mine. (You'll need to install glib2.0-debuginfo.) Ken $ gdb /usr/bin/emacs-w32.exe GNU gdb (GDB) 7.6.50.20130728-cvs (cygwin-special) [...] Reading symbols from /usr/bin/emacs-w32.exe...Reading symbols from /usr/lib/debug/usr/bin/emacs-w32.exe.dbg...done. done. (gdb) b Fgfile_add_watch Breakpoint 1 at 0x5f7a3f: file /usr/src/debug/emacs-24.3.91-2/src/gfilenotify.c, line 170. (gdb) r -Q Starting program: /usr/bin/emacs-w32.exe -Q [...] Breakpoint 1, Fgfile_add_watch (file=-2145740495, flags=13798510, callback=-2146880150) at /usr/src/debug/emacs-24.3.91-2/src/gfilenotify.c:170 170 GFileMonitorFlags gflags = G_FILE_MONITOR_NONE; (gdb) b g_file_monitor Breakpoint 2 at 0x6a357e50: file /usr/src/debug/glib2.0-2.38.2-2/gio/gfile.c, line 5338. (gdb) c Continuing. [...] Breakpoint 2, g_file_monitor (file=0x80061530, flags=(G_FILE_MONITOR_WATCH_MOUNTS | G_FILE_MONITOR_SEND_MOVED), cancellable=0x0, error=0x0) at /usr/src/debug/glib2.0-2.38.2-2/gio/gfile.c:5338 5338 { (gdb) n 5339 if (g_file_query_file_type (file, 0, cancellable) == G_FILE_TYPE_DIRECTORY) (gdb) n 5338 { (gdb) n 5339 if (g_file_query_file_type (file, 0, cancellable) == G_FILE_TYPE_DIRECTORY) (gdb) n 5340 return g_file_monitor_directory (file, (gdb) n 5339 if (g_file_query_file_type (file, 0, cancellable) == G_FILE_TYPE_DIRECTORY) (gdb) n 5341 flags & ~G_FILE_MONITOR_WATCH_HARD_LINKS, (gdb) n 5340 return g_file_monitor_directory (file, (gdb) n 5345 } (gdb) n 5340 return g_file_monitor_directory (file, (gdb) n g_file_monitor_directory (file=0x80061530, flags=(G_FILE_MONITOR_WATCH_MOUNTS | G_FILE_MONITOR_SEND_MOVED), cancellable=0x0, error=0x0) at /usr/src/debug/glib2.0-2.38.2-2/gio/gfile.c:5235 5235 { (gdb) n 5238 g_return_val_if_fail (G_IS_FILE (file), NULL); (gdb) n /netrel/src/gdb-7.6.50-4/gdb/infrun.c:1942: internal-error: resume: Assertion `pc_in_thread_step_range (pc, tp)' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) y -- 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