Subject: bug#6284: closed (Re: bug#6284: Crash in w32_wnd_proc at frame deletion)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 08 Jul 2011 12:55:03 +0000

Your bug report

#6284: Crash in w32_wnd_proc at frame deletion

which was filed against the emacs,w32 package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
6284: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6284
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#6284: Crash in w32_wnd_proc at frame deletion
From: Jason Rumney <[email-masked]>
To: Lennart Borgman <[email-masked]>
Cc: Juanma Barranquero <[email-masked]>, Eli Zaretskii <[email-masked]>, [email-masked]
Date: Fri, 08 Jul 2011 20:53:47 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Lennart Borgman <[email-masked]> writes:

> New patch. I missed one place in the previous patch and this just hit me.
>
> It is great running under the debugger and finally being able to find
> and fix those bugs I have wondered about quite long now but have not
> had time to fix before.
>
> The only problem now is how to get them installed. As I said elsewhere
> I currently have no checkout from savannah so I can't checkin the
> patches myself AFAIK. Should I get a second checkout from savannah for
> this, or?

I fixed the two locations where a bug could conceivably occur.  Others
were either #ifdef'ed out, or already protected against dereferencing
the non-existent frame struct.

Subject: Crash in w32_wnd_proc at frame deletion
From: Lennart Borgman <[email-masked]>
To: Emacs Bugs <[email-masked]>
Date: Thu, 27 May 2010 19:44:27 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Now I finally got a backtrace of this crash. Thanks for the (harsh)
reminders about running under gdb.

Here is part of the backtrace

  Program received signal SIGSEGV, Segmentation fault.
  [Switching to Thread 1836.0xef8]
  0x011cc376 in w32_wnd_proc (hwnd=0x1001ac, msg=32, wParam=1049004,
      lParam=33554433) at w32fns.c:4351
  4351              if (f->output_data.w32->hourglass_p && !menubar_in_use
  (gdb) bt
  #0  0x011cc376 in w32_wnd_proc (hwnd=0x1001ac, msg=32, wParam=1049004,
      lParam=33554433) at w32fns.c:4351
  #1  0x7e418734 in USER32!GetDC () from C:\WINDOWS\system32\user32.dll
  #2  0x001001ac in ?? ()
  #3  0x00000020 in ?? ()
  #4  0x001001ac in ?? ()
  #5  0x02000001 in ?? ()
  #6  0x011c9291 in post_character_message (hwnd=0x11c9291, msg=1049004,
      wParam=32, lParam=1049004, dwmodifiers=33554433) at w32fns.c:3049
  #7  0x7e418816 in USER32!GetDC () from C:\WINDOWS\system32\user32.dll
  #8  0x011c9291 in post_character_message (hwnd=0x0, msg=18649745,
      wParam=1049004, lParam=32, dwmodifiers=1049004) at w32fns.c:3049
  #9  0x7e428ea0 in USER32!DefWindowProcW () from C:\WINDOWS\system32\user32.dll
  #10 0x00000000 in ?? ()

  Lisp Backtrace:
  "delete-frame" (0x82af44)

It looks like the important part is line 4351. I tried to look at f:

  (gdb) print f
  $1 = (struct frame *) 0x0
  (gdb) print f->output_data
  Cannot access memory at address 0x104

Does this mean that f might be gone here and that there should be a
test for this?