Subject: bug#17975: 24.3.92; assertion failure deleting frames with varying names for the same display (and, using multiple X11 connections in that case too)

From: Dmitry Antipov <[email-masked]>
Date: Sun, 13 Jul 2014 14:56:26 +0400

Just for the record: running Motif build with the same args, i.e.

./src/emacs -Q --eval '(let ((f (selected-frame))) (make-frame-on-display ":0") (delete-frame f))'

produces a hard crash caused by an attempt to dereference NULL
'Display *' pointer somewhere in Motif's libXm.so library:

Program received signal SIGSEGV, Segmentation fault.
XFindContext (display=display@entry=0x0, rid=14237104, context=context@entry=-5, data=data@entry=0x7ffffffecc80) at Context.c:245
245		LockDisplay(display);
(gdb) bt
#0  XFindContext (display=display@entry=0x0, rid=14237104, context=context@entry=-5, data=data@entry=0x7ffffffecc80) at Context.c:245
#1  0x00000037da3a92d8 in _XmRCColorHook (w=w@entry=0x14bb6a0, alIn=alIn@entry=0x7ffffffed340, acPtrIn=acPtrIn@entry=0x7ffffffecd7c)
     at RCHook.c:73
#2  0x00000037dbc1bed7 in CallInitialize (class=<optimized out>, req_widget=req_widget@entry=0x7ffffffecec0,
     new_widget=new_widget@entry=0x14bb6a0, args=args@entry=0x7ffffffed340, num_args=num_args@entry=1) at Create.c:231
#3  0x00000037dbc1c867 in xtCreate (name=name@entry=0xd60490 "Line Wrapping in This Buffer", class=class@entry=0x0,
     widget_class=widget_class@entry=0x37da6b8800 <xmRowColumnClassRec>, parent=parent@entry=0x157b060, default_screen=0x133b0a0,
     args=args@entry=0x7ffffffed340, num_args=num_args@entry=1, typed_args=typed_args@entry=0x0,
     num_typed_args=num_typed_args@entry=0, parent_constraint_class=0x0, post_proc=post_proc@entry=0x37dbc1bef0 <widgetPostProc>)
     at Create.c:416
#4  0x00000037dbc1cc90 in _XtCreateWidget (name=name@entry=0xd60490 "Line Wrapping in This Buffer",
     widget_class=widget_class@entry=0x37da6b8800 <xmRowColumnClassRec>, parent=parent@entry=0x157b060,
     args=args@entry=0x7ffffffed340, num_args=num_args@entry=1, typed_args=typed_args@entry=0x0,
     num_typed_args=num_typed_args@entry=0) at Create.c:570
#5  0x00000037dbc1cf7e in XtCreateWidget (name=name@entry=0xd60490 "Line Wrapping in This Buffer",
     widget_class=0x37da6b8800 <xmRowColumnClassRec>, parent=0x157b060, args=args@entry=0x7ffffffed340, num_args=num_args@entry=1)
     at Create.c:589
#6  0x00000037da2f5a02 in create (p=p@entry=0x16c7300, name=name@entry=0xd60490 "Line Wrapping in This Buffer",
     old_al=old_al@entry=0x0, old_ac=old_ac@entry=0, type=type@entry=2, is_radio=is_radio@entry=0) at RowColumn.c:3246
#7  0x00000037da2f7cbe in XmCreatePulldownMenu (p=0x16c7300, name=0xd60490 "Line Wrapping in This Buffer", al=0x0, ac=0)
     at RowColumn.c:3485
#8  0x00000000006d07a1 in update_one_menu_entry (instance=0xe22a00, widget=0x16c88c0, val=0xd60420, deep_p=1 '\001')
     at ../../trunk/lwlib/lwlib-Xm.c:695
#9  0x00000000006d0b40 in xm_update_menu (instance=0xe22a00, widget=0x16c7300, val=0xd56a30, deep_p=1 '\001')
     at ../../trunk/lwlib/lwlib-Xm.c:783
#10 0x00000000006d09c8 in update_one_menu_entry (instance=0xe22a00, widget=0x171ad50, val=0xd56a30, deep_p=1 '\001')
     at ../../trunk/lwlib/lwlib-Xm.c:726
#11 0x00000000006d0b40 in xm_update_menu (instance=0xe22a00, widget=0x156e1e0, val=0xc53ed0, deep_p=1 '\001')
     at ../../trunk/lwlib/lwlib-Xm.c:783
#12 0x00000000006d0ec3 in xm_update_one_widget (instance=0xe22a00, widget=0x156e1e0, val=0xc53ed0, deep_p=1 '\001')
     at ../../trunk/lwlib/lwlib-Xm.c:879
#13 0x00000000006ce0b1 in set_one_value (instance=0xe22a00, val=0xc53ed0, deep_p=1 '\001') at ../../trunk/lwlib/lwlib.c:534
#14 0x00000000006ce106 in update_one_widget_instance (instance=0xe22a00, deep_p=1 '\001') at ../../trunk/lwlib/lwlib.c:554
#15 0x00000000006ce14c in update_all_widget_values (info=0xce4bd0, deep_p=1 '\001') at ../../trunk/lwlib/lwlib.c:564
#16 0x00000000006ce370 in lw_modify_all_widgets (id=2, val=0x1384670, deep_p=1 '\001') at ../../trunk/lwlib/lwlib.c:618
#17 0x00000000004a5413 in set_frame_menubar (f=0x11b59e0, first_time=false, deep_p=true) at ../../trunk/src/xmenu.c:973
#18 0x000000000045c90e in update_menu_bar (f=0x11b59e0, save_match_data=0, hooks_run=1) at ../../trunk/src/xdisp.c:11818
#19 0x000000000045c552 in prepare_menu_bars () at ../../trunk/src/xdisp.c:11701
#20 0x0000000000460b72 in redisplay_internal () at ../../trunk/src/xdisp.c:13493
#21 0x000000000045f850 in redisplay () at ../../trunk/src/xdisp.c:13112
#22 0x000000000056be8f in read_char (commandflag=1, map=..., prev_event=..., used_mouse_menu=0x7fffffffd75f, end_time=0x0)
     at ../../trunk/src/keyboard.c:2918
#23 0x000000000057a588 in read_key_sequence (keybuf=0x7fffffffd940, bufsize=30, prompt=..., dont_downcase_last=false,
     can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../trunk/src/keyboard.c:9085
#24 0x0000000000567f3d in command_loop_1 () at ../../trunk/src/keyboard.c:1439
#25 0x0000000000608f0f in internal_condition_case (bfun=0x567b7b <command_loop_1>, handlers=..., hfun=0x567351 <cmd_error>)
     at ../../trunk/src/eval.c:1349
#26 0x0000000000567819 in command_loop_2 (ignore=...) at ../../trunk/src/keyboard.c:1170
#27 0x0000000000608392 in internal_catch (tag=..., func=0x5677f6 <command_loop_2>, arg=...) at ../../trunk/src/eval.c:1113
#28 0x00000000005677cd in command_loop () at ../../trunk/src/keyboard.c:1149
#29 0x0000000000566e7d in recursive_edit_1 () at ../../trunk/src/keyboard.c:770
#30 0x000000000056704d in Frecursive_edit () at ../../trunk/src/keyboard.c:841
#31 0x0000000000564f54 in main (argc=4, argv=0x7fffffffddc8) at ../../trunk/src/emacs.c:1656

Dmitry