Segfault after attempting to enter dir with execute only perm

  • From: "Jonathan A. Irwin" <jnthn_gmane@xxxxxxxxx>
  • To: emelfm2@xxxxxxxxxxxxx
  • Date: Sat, 8 Jul 2006 23:45:18 -0400

I've noticed a problem that affects both the current (0.1.7) release
and the latest pre-release (emelfm2-tom-20060621). If I attempt to
enter a directory for which I have execute only permission (In this
case, owned by another user, with perm 0711) I get a GTK error:

(emelfm2:30852): Gtk-CRITICAL **: gtk_tree_model_get_iter_first:assertion 
`GTK_IS_TREE_MODEL (tree_model)' failed

And e2 seems to hang in perpetual "wait" state, judging by the "busy"
mouse cursor. However, I can still back out of the directory, and
e2 seems to return to normal... but there's still a problem. Somehow
the act of trying to read that unreadable dir has set:

pane2-sort-column=-2

Now, e2 is headed for a crash. If I attempt to reset the sort order by
clicking one of the pane headers, e2 will crash right away. If I do not
try to change sort order before quitting e2, I will get a segfault when
I try to restart the application.

I lost a few hairs before I saw what was happening here, and how to work
around it. :)

Oddly enough, I can't get it to segfault by resetting the sort order
manually, if e2 has been compiled with DEBUG=1. I did get a gdb
backtrace from a segfault at startup after the sort-column=-2 thing had
been set on the last run of e2:

-------------------------------------------------------------------------
jnthn@:/tmp/emelfm2-tom-20060621$ gdb ./emelfm2 
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-slackware-linux"...Using host libthread_db 
library "/lib/libthread_db.so.1".

(gdb) run
Starting program: /tmp/emelfm2-tom-20060621/emelfm2 
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 2122)]
[DEBUG ] gtk init
[DEBUG ] parsed 0 command line options
[DEBUG ] check_locale ()
[DEBUG ] cache read from file '/home/jnthn/.xdgconfig/emelfm2/cache'
[DEBUG ] registering all default (non-tree) options
[DEBUG ] e2_alias_init (rt:,group:commands.aliases)
[DEBUG ] config file '/home/jnthn/.xdgconfig/emelfm2/config-en_US' read
[DEBUG ] cache 'mkdir-history' found
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_glob.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_rename_ext.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_for_each.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_pack.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_names_clip.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_sort_by_ext.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_du.so
[DEBUG ] load plugin: /usr/local/lib/emelfm2/plugins/e2p_unpack.so
[DEBUG ] create main window
[DEBUG ] cache 'window-width' found
[DEBUG ] cache 'window-height' found
[DEBUG ] cache 'file-pane-ratio-last' found
[DEBUG ] cache 'file-pane-ratio' found
[DEBUG ] cache 'output-pane-ratio-last' found
[DEBUG ] cache 'output-pane-ratio' found
[DEBUG ] cache 'output-pane-tabs' found
[DEBUG ] stacked tab is at 80d432c
[DEBUG ] created tab at 81bc570
[DEBUG ] cache 'columns-order' found
[DEBUG ] cache 'columns-width' found
[DEBUG ] cache 'pane1-sort-column' found
[DEBUG ] cache 'pane2-sort-column' found
[DEBUG ] cache 'pane1-sort-direction' found
[DEBUG ] cache 'pane2-sort-direction' found
[DEBUG ] cache 'pane1-show-hidden' found
[DEBUG ] cache 'pane2-show-hidden' found
[DEBUG ] cache 'pane1-filter-names' found
[DEBUG ] cache 'pane1-filter-nametype' found
[DEBUG ] cache 'pane1-filter-nameinvert' found
[DEBUG ] cache 'pane1-filter-namecase' found
[DEBUG ] cache 'pane1-filter-dates' found
[DEBUG ] cache 'pane1-filter-datebase' found
[DEBUG ] cache 'pane1-filter-daterel' found
[DEBUG ] cache 'pane1-filter-datetype' found
[DEBUG ] cache 'pane1-filter-sizes' found
[DEBUG ] cache 'pane1-filter-sizebase' found
[DEBUG ] cache 'pane1-filter-sizerel' found
[DEBUG ] cache 'pane1-filter-dirs' found
[DEBUG ] cache 'pane2-filter-names' found
[DEBUG ] cache 'pane2-filter-nametype' found
[DEBUG ] cache 'pane2-filter-nameinvert' found
[DEBUG ] cache 'pane2-filter-namecase' found
[DEBUG ] cache 'pane2-filter-dates' found
[DEBUG ] cache 'pane2-filter-datebase' found
[DEBUG ] cache 'pane2-filter-daterel' found
[DEBUG ] cache 'pane2-filter-datetype' found
[DEBUG ] cache 'pane2-filter-sizes' found
[DEBUG ] cache 'pane2-filter-sizebase' found
[DEBUG ] cache 'pane2-filter-sizerel' found
[DEBUG ] cache 'pane2-filter-dirs' found
[DEBUG ] first widget registered for keybinding category 'general'
[DEBUG ] cache 'pane1' found
[DEBUG ] cache 'pane1-history' found
[DEBUG ] first widget registered for keybinding category 'general.panes'
[DEBUG ] cache 'dir line' found
[DEBUG ] first widget registered for keybinding category 'general.directory 
lines'
[DEBUG ] SAME state for toggle 'pane1.show_hidden' (false)
[DEBUG ] SAME state for toggle 'pane1.<filters>' (true)
[DEBUG ] cache 'pane2' found
[DEBUG ] cache 'pane2-history' found

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 2122)]
0x40284f1a in gtk_widget_show () from /opt/gtk2/lib/libgtk-x11-2.0.so.0
(gdb) bt
#0  0x40284f1a in gtk_widget_show () from /opt/gtk2/lib/libgtk-x11-2.0.so.0
#1  0x0824eb38 in ?? ()
#2  0xfffffffe in ?? ()
#3  0x00000000 in ?? ()
#4  0x4024df88 in gtk_tree_sortable_set_sort_column_id ()
   from /opt/gtk2/lib/libgtk-x11-2.0.so.0
#5  0x0806a107 in e2_fileview_create_list (view=0x80d3024)
    at src/e2_fileview.c:3117
#6  0x08072a61 in e2_pane_create_part (rt=0x80d1d90) at src/e2_pane.c:992
#7  0x080729ce in e2_pane_create (rt=0x80d1d90) at src/e2_pane.c:973
#8  0x080856f6 in e2_window_create (rt=0x80d1c78) at src/e2_window.c:1039
#9  0x0806d408 in main (argc=1, argv=0xbfffeaf4) at src/e2_main.c:377

-------------------------------------------------------------------------

I tried to print a few frames, but always came up with "The history is
empty." I'm no expert at running gdb, but if you need any more info,
I'll see what I can do.

Thanks,
Jonathan

-- 
Jonathan A. Irwin
jnthn_gmane@xxxxxxxxx


-- 
Users can unsubscribe from the list by sending email to 
emelfm2-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field or by 
logging into the web interface.

Other related posts: