Subject: 24.0.50; emacs loops when it loses an emacsclient connection

From: robert marshall <[email-masked]>
Date: Fri, 04 Feb 2011 12:47:37 +0000

If I ssh onto the machine running an emacs instance and connect using
emacsclient -c and the ssh connection goes down, the emacs instance
becomes unresponsive, outputting lots of 

(rajm:13575): GLib-WARNING **: g_main_context_prepare() called recursively from within a source's check() or prepare() member.

messages. From the debugger I get the following (sorry about the length!)

bt full
#0  abort () at emacs.c:431
No locals.
#1  0x08186282 in Fsignal (error_symbol=138457882, data=180463862)
    at eval.c:1630
        allhandlers = 0xbfffd50c
        conditions = <value optimized out>
        real_error_symbol = -1073754200
        bp = <value optimized out>
#2  0x081862a8 in xsignal (error_symbol=138457882, data=180463862)
    at eval.c:1729
No locals.
#3  0x0814a2c4 in report_file_error (string=
    0x81fdaeb "make client process failed", data=180463886) at fileio.c:284
        errstring = <value optimized out>
        errorno = <value optimized out>
        str = <value optimized out>
#4  0x081c8955 in Fmake_network_process (nargs=10, args=0xbfffd2e8)
    at process.c:3748
        proc = <value optimized out>
        contact = 180463886
        p = <value optimized out>
        ai = {
          ai_flags = -1073753856, 
          ai_family = 1, 
          ai_socktype = 1, 
          ai_protocol = 0, 
          ai_addrlen = 110, 
          ai_addr = 0xbfffd142, 
          ai_canonname = 0xbfffd248 "\310\322\377\277\306^\030\b\n", 
          ai_next = 0x0
        }
        res = 0xbfffd1d0
        lres = 0x0
        hints = {
          ai_flags = 1836017711, 
          ai_family = 1869754213, 
          ai_socktype = 1953654114, 
          ai_protocol = 1886221359, 
          ai_addrlen = 1634559279, 
          ai_addr = 0x30357363, 
          ai_canonname = 0x65732f32 <Address 0x65732f32 out of bounds>, 
          ai_next = 0x72657672
        }
        portstring = <value optimized out>
        portbuf = 
    "\311\t\312\b@\b\b\321\377\277\310v\026\b\210(?\b\000\000\000\000\000\000\00-0\000\324\005\204\n \000\000\000\000\000\000\000 \000\000\000\000\000\000\000 ", '\000' <repeats 11 times>, "@\326\311\tA\326\311\t\312\b@\b8\321\377\277^\000\026\b\210(?\b\324\005\204\n \000\000\000\000\000\000\000 \000\000\000\000\000\000\000X\321\377\277\027\006\027\b\240FH\b)tO\b\230\321\377\277\230z\024\b)t"
        address_in = {
          sin_family = 53472, 
          sin_port = 49151, 
          sin_addr = {
            s_addr = 145608862
          }, 
          sin_zero = "\264\323\377\277\264\322\377\277"
        }
        address_un = {
          sun_family = 1, 
          sun_path = 
    "/home/robert/tmp/emacs502/server", '\000' <repeats 75 times>
        }
        ret = <value optimized out>
        xerrno = 2
        QCaddress = 138551458
        tem = <value optimized out>
        name = 145025041
        buffer = 138414282
        host = <value optimized out>
        service = 164222529
        address = <value optimized out>
        filter = 138414282
        sentinel = 138414282
        is_non_blocking_client = 0
        is_server = 0
        backlog = 5
        socktype = 1
        family = 1
#5  0x08185ec6 in Ffuncall (nargs=11, args=0xbfffd2e4) at eval.c:2996
        fun = <value optimized out>
        original_fun = 138553290
        funcar = <value optimized out>
        numargs = 10
        val = <value optimized out>
        backtrace = {
          next = 0xbfffd3f4, 
          function = 0xbfffd2e4, 
          args = 0xbfffd2e8, 
          nargs = 10, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#6  0x081bdda1 in Fbyte_code (bytestr=145031281, vector=145490453, maxdepth=56)
    at bytecode.c:679
        op = <value optimized out>
        stack = {
          pc = 0x8aecb3f "!\210=d1=87", 
          top = 0xbfffd30c, 
          bottom = 0xbfffd2e0, 
          byte_string = 145031281, 
          byte_string_start = 0x8aecb00 "\b\203.", 
          constants = 145490453, 
          next = 0xbfffd594
        }
        top = 0xbfffd2e4
        result = <value optimized out>
#7  0x081877fa in Feval (form=145640022) at eval.c:2352
        numargs = <value optimized out>
        args_left = 138414282
        i = 3
        argvals = {145031281, 145490453, 56, 138414282, 6, -1073753324, 
    11568405, -1073753080}
        fun = <value optimized out>
        val = <value optimized out>
        original_fun = 138534434
        original_args = 145640038
        funcar = <value optimized out>
        backtrace = {
          next = 0xbfffd66c, 
          function = 0xbfffd40c, 
          args = 0xbfffd3d4, 
          nargs = 3, 
          evalargs = 1 '\001', 
          debug_on_exit = 0 '\000'
        }
#8  0x08188332 in internal_lisp_condition_case (var=138414282, bodyform=
    145640022, handlers=145606446) at eval.c:1435
        val = <value optimized out>
        c = {
          tag = 138414282, 
          val = 138414282, 
          next = 0xbfffea84, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {145606440, 145490608, 9, -1073752792,
-1575511232,
    1824178735}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {141201432, 139330002, 138522298, 135820755, 
    139330002, 138859232, 145786133, 135114791, 141201432, 138414282, 0, 
    145786133, 145786133, 138414282, 3221214408, 136059596, 138414282, 
    152095670, 3221214408, 145786128, 145786133, 138414282, 3221214472, 
    136082634, 0, 180464422, 3221214472, 135659614, 138356872, 176424124, 32, 
    0}
              }
            }}, 
          backlist = 0xbfffd66c, 
          handlerlist = 0xbfffeb4c, 
          lisp_eval_depth = 5, 
          pdlcount = 9, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0xbfffd594
        }
        h = {
          handler = 145606446, 
          var = 138414282, 
          chosen_clause = 164317017, 
         tag = 0xbfffd444, 
          next = 0xbfffeb4c
        }
#9  0x081be6bc in Fbyte_code (bytestr=145032297, vector=145490613, maxdepth=12)
    at bytecode.c:869
        handlers = 0
        body = <value optimized out>
        op = 180463870
        stack = {
          pc = 0x8aecafa "\207", 
          top = 0xbfffd540, 
          bottom = 0xbfffd540, 
          byte_string = 145032297, 
          byte_string_start = 0x8aecaf0 "\b\204\006", 
          constants = 145490613, 
          next = 0xbfffd754
        }
        top = 0xbfffd540
        result = <value optimized out>
#10 0x08187c24 in funcall_lambda (fun=<value optimized out>, 
    nargs=<value optimized out>, arg_vector=0xac1a8fe) at eval.c:3202
        val = <value optimized out>
        syms_left = 138414282
        next = <value optimized out>
        i = 1
        optional = 1
        rest = 0
#11 0x08185c53 in Ffuncall (nargs=2, args=0xbfffd6b0) at eval.c:3072
        fun = 1
        original_fun = 145654738
        funcar = <value optimized out>
        numargs = 1
        val = <value optimized out>
        backtrace = {
          next = 0xbfffd82c, 
          function = 0xbfffd6b0, 
          args = 0xbfffd6b4, 
          nargs = 1, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#12 0x081bdda1 in Fbyte_code (bytestr=145073393, vector=144956797, maxdepth=92)
    at bytecode.c:679
        op = <value optimized out>
        stack = {
          pc = 0x8aec5b5 "\320=\204N", 
          top = 0xbfffd6b4, 
          bottom = 0xbfffd6b0, 
          byte_string = 145073393, 
          byte_string_start = 0x8aec574 "\b\203 ", 
          constants = 144956797, 
          next = 0xbfffd8c4
        }
        top = 0xbfffd6b0
        result = <value optimized out>
#13 0x08187c24 in funcall_lambda (fun=<value optimized out>, 
    nargs=<value optimized out>, arg_vector=0xac1a8fe) at eval.c:3202
        val = <value optimized out>
        syms_left = 138414282
        next = <value optimized out>
        i = 1
        optional = 1
        rest = 0
#14 0x08185c53 in Ffuncall (nargs=2, args=0xbfffd870) at eval.c:3072
        fun = 1
        original_fun = 139330394
        funcar = <value optimized out>
       numargs = 1
        val = <value optimized out>
        backtrace = {
          next = 0xbfffd99c, 
          function = 0xbfffd870, 
          args = 0xbfffd874, 
          nargs = 1, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#15 0x081bdda1 in Fbyte_code (bytestr=145014025, vector=145655861, maxdepth=12)
    at bytecode.c:679
        op = <value optimized out>
        stack = {
          pc = 0x8aecbf9 "\210\314\315\n\203\070", 
          top = 0xbfffd874, 
          bottom = 0xbfffd870, 
          byte_string = 145014025, 
          byte_string_start = 0x8aecbcc "\303 \030\t\304=\203\016", 
          constants = 145655861, 
          next = 0xbfffda34
        }
        top = 0xbfffd870
        result = <value optimized out>
#16 0x08187c24 in funcall_lambda (fun=<value optimized out>, 
    nargs=<value optimized out>, arg_vector=0xac1a8fe) at eval.c:3202
        val = <value optimized out>
        syms_left = 138414282
        next = <value optimized out>
        i = 1
        optional = 1
        rest = 0
#17 0x08185c53 in Ffuncall (nargs=2, args=0xbfffd9e0) at eval.c:3072
        fun = 1
        original_fun = 139312050
        funcar = <value optimized out>
        numargs = 1
        val = <value optimized out>
        backtrace = {
          next = 0xbfffdb0c, 
          function = 0xbfffd9e0, 
          args = 0xbfffd9e4, 
          nargs = 1, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#18 0x081bdda1 in Fbyte_code (bytestr=145059369, vector=145621677, maxdepth=8)
    at bytecode.c:679
        op = <value optimized out>
        stack = {
          pc = 0x8aec917 "\207", 
          top = 0xbfffd9e4, 
          bottom = 0xbfffd9e0, 
          byte_string = 145059369, 
          byte_string_start = 0x8aec914 "\300\301!\207", 
          constants = 145621677, 
          next = 0x0
        }
        top = 0xbfffd9e0
        result = <value optimized out>
#19 0x08187c24 in funcall_lambda (fun=<value optimized out>, 
    nargs=<value optimized out>, arg_vector=0xac1a8fe) at eval.c:3202
        val = <value optimized out>
        syms_left = 138414282
        next = <value optimized out>
        i = 0
        optional = 0
        rest = -1073751488
#20 0x08185c53 in Ffuncall (nargs=1, args=0xbfffdb8c) at eval.c:3072
        fun = 1
        original_fun = 145622541
        funcar = <value optimized out>
        numargs = 0
        val = <value optimized out>
        backtrace = {
          next = 0xbfffdbfc, 
          function = 0xbfffdb8c, 
          args = 0xbfffdb90, 
          nargs = 0, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#21 0x08186f21 in run_hook_with_args (nargs=<value optimized out>, args=
    0xbfffdb8c, cond=to_completion) at eval.c:2674
        sym = 138547242
        val = <value optimized out>
        ret = 0
        globals = -1073750956
#22 0x081870b0 in Frun_hooks (nargs=1, args=0xbfffdc54) at eval.c:2537
        hook = {145622541}
        i = 1
#23 0x08185ec6 in Ffuncall (nargs=2, args=0xbfffdc50) at eval.c:2996
        fun = <value optimized out>
        original_fun = 138523770
        funcar = <value optimized out>
        numargs = 1
        val = <value optimized out>
        backtrace = {
          next = 0x0, 
          function = 0xbfffdc50, 
          args = 0xbfffdc54, 
          nargs = 1, 
          evalargs = 0 '\000', 
          debug_on_exit = 0 '\000'
        }
        internal_args = <value optimized out>
        i = <value optimized out>
#24 0x08186db9 in call1 (fn=138523770, arg1=138547242) at eval.c:2800
        ret_ungc_val = 1
#25 0x08115d45 in Fkill_emacs (arg=138414282) at emacs.c:2127
No locals.
#26 0x0811ac95 in interrupt_signal (signalnum=2) at keyboard.c:11032
        old_errno = 11
        terminal = <value optimized out>
#27 <signal handler called>
No symbol table info available.
#28 0xffffe424 in __kernel_vsyscall ()
No symbol table info available.
#29 0xb72401cd in ___newselect_nocancel () from /lib/i686/libc.so.6
No symbol table info available.
#30 0x081c570b in select_wrapper (time_limit=0, microsecs=0, read_kbd=-1, 
    do_display=1, wait_for_cell=138414282, wait_proc=0x0, just_wait_proc=0)
    at process.c:4570
No locals.
#31 wait_reading_process_output (time_limit=0, microsecs=0, read_kbd=-1, 
    do_display=1, wait_for_cell=138414282, wait_proc=0x0, just_wait_proc=0)
    at process.c:4929
        timeout_reduced_for_timers = 1
        channel = <value optimized out>
        nfds = 169391568
        Available = {
          fds_bits = {404608, 0 <repeats 31 times>}
        }
        Connecting = {
          fds_bits = {0 <repeats 32 times>}
        }
        check_connect = 0
        check_delay = 2
        no_avail = -1073748716
        xerrno = 11
        proc = <value optimized out>
        timeout = {
          tv_sec = 0, 
          tv_usec = 144352
        }
        end_time = {
          tv_sec = 0, 
          tv_usec = 0
        }
        wait_channel = -1
        got_some_input = 1
#32 0x08124010 in kbd_buffer_get_event (commandflag=1, nmaps=5, maps=
    0xbfffe860, prev_event=138414282, used_mouse_menu=0xbfffe928, end_time=0x0)
    at keyboard.c:4106
        c = <value optimized out>
        obj = <value optimized out>
#33 read_char (commandflag=1, nmaps=5, maps=0xbfffe860, prev_event=138414282, 
    used_mouse_menu=0xbfffe928, end_time=0x0) at keyboard.c:3060
        kb = 0x4008ca
        c = 138414282
        local_getcjmp = {{
            __jmpbuf = {138414282, 143454173, 144014976, -1073747960, 
    -1569440960, 2043253295}, 
            __mask_was_saved = 0, 
            __saved_mask = {
              __val = {169391573, 4294967295, 3221219148, 169391568, 
    3221219128, 136128560, 186213198, 138442586, 1, 4294967295, 169391573, 
    6180, 3221219240, 136151614, 169391568, 138442586, 169391573, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 138442586, 169391573, 6180, 139337186, 139337186, 139004840}
            }
          }}
        save_jump = {{
            __jmpbuf = {138414282, 138414282, 144014976, -1073747960, 
    -1569440960, 2043253295}, 
            __mask_was_saved = 0, 
            __saved_mask = {
              __val = {169391573, 4294967295, 3221219148, 169391568, 
    3221219128, 136128560, 175912886, 138442586, 1, 4294967295,
3221219148,
    4294967295, 3221219368, 135789127, 175912886, 138442586, 169391573, 
    135819166, 1, 3221219228, 3221218856, 136130711, 138414330, 138445386, 
    152235656, 1, 177730696, 177730696, 3221218920, 1, 3221219428, 1}
            }
          }}
        key_already_recorded = 0
        tem = <value optimized out>
        save = <value optimized out>
        previous_echo_area_message = 138414282
        also_record = 138414282
        reread = 0
        polling_stopped_here = <value optimized out>
        orig_kboard = 0x86d6708
#34 0x08125cee in read_key_sequence (keybuf=<value optimized out>, 
    bufsize=<value optimized out>, prompt=<value optimized out>, 
    dont_downcase_last=0, can_return_switch_frame=1, fix_current_buffer=1)
    at keyboard.c:9443
        interrupted_kboard = 0x86d6708
        key = <value optimized out>
        used_mouse_menu = 0
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
       local_first_binding = 0
        from_string = 138414282
        count = 2
        t = 0
        echo_start = 0
        keys_start = 0
        nmaps = 5
        nmaps_allocated = 5
        defs = 0xbfffe830
        submaps = 0xbfffe860
        orig_local_map = 149108198
        orig_keymap = 138414282
        localized_local_map = 0
        first_binding = 0
        first_unbound = 31
        mock_input = 0
        fkey = {
          parent = 140911494, 
          map = 140911494, 
          start = 0, 
          end = 0
        }
        keytran = {
          parent = 138407654, 
          map = 138407654, 
          start = 0, 
          end = 0
        }
        indec = {
          parent = 140911486, 
          map = 140911486, 
          start = 0, 
          end = 0
        }
        shift_translated = 0
        delayed_switch_frame = 138414282
        original_uppercase = -1073747592
        original_uppercase_position = -1
        starting_buffer = <value optimized out>
        fake_prefixed_keys = 138414282
#35 0x0812801b in command_loop_1 () at keyboard.c:1641
        cmd = <value optimized out>
        lose = <value optimized out>
        keybuf = {-1073747426, 138414282, 156, 404, 135365648, -1073747426, 
    138414282, 138414282, -1073747352, 135405709, 173593462, -1073747426, 0, 
    0, 0, 0, -1073747412, -1090459264, 0, -1223229440, 138414282,
139423690, 
    0, 88216588, 23, 138555264, 138555264, 138555280, -1073747352, 135386643}
        i = <value optimized out>
        prev_modiff = 138555280
        prev_buffer = 0x0
        already_adjusted = 0
#36 0x08185191 in internal_condition_case (bfun=0x8127e40 <command_loop_1>, 
    handlers=138452242, hfun=0x8121fc0 <cmd_error>) at eval.c:1490
        val = -4
        c = {
          tag = 138414282, 
          val = 138414282, 
          next = 0xbfffeba8, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {138555264, 138555264, 138555280, -1073747096, 
    -1570038976, 1830639663}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {3087005960, 21, 0, 0, 0, 3071813541, 134540800, 
    3068802240, 0, 3221220192, 3221220120, 3221220132, 0, 3087005960, 
    134539791, 3221219908, 3086926900, 0, 0, 0, 429496729, 501, 3073105908, 
    3072163953, 3073113116, 3221219808, 3071770076, 3074723152, 3221220160, 
    4294967295, 3087003636, 134539791}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
        h = {
          handler = 138452242, 
          var = 138414282, 
          chosen_clause = 138414330, 
          tag = 0xbfffea84, 
          next = 0x0
        }
#37 0x081214a5 in command_loop_2 () at keyboard.c:1358
        val = -4
#38 0x08185271 in internal_catch (tag=138449314, func=
    0x8121480 <command_loop_2>, arg=138414282) at eval.c:1226
        c = {
          tag = 138449314, 
         val = 138414282, 
          next = 0x0, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {138555264, 138555264, 138555280, -1073746824, 
    -1570186432, 1830510639}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {3221220452, 3221220600, 135401714, 3221220464, 0, 0, 
    0, 0, 0, 0, 138440136, 138414282, 138581528, 3221220440, 135754132, 
    138581530, 138579555, 138414282, 138440136, 0, 3072989108, 3073110968, 
    119, 124, 3072989108, 110, 138414306, 124, 14, 3221220556, 138581530, 
    138414282}
              }
            }}, 
          backlist = 0x0, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
#39 0x08121e0f in command_loop () at keyboard.c:1337
No locals.
#40 0x081221aa in recursive_edit_1 () at keyboard.c:952
        val = <value optimized out>
#41 0x081222d2 in Frecursive_edit () at keyboard.c:1014
        buffer = 138414282
#42 0x08116da8 in main (argc=<value optimized out>, argv=<value optimized out>)
    at emacs.c:1827
        dummy = -1073745912
        stack_bottom_variable = 8 '\b'
        do_initial_setlocale = 138555264
        skip_args = 0
        rlim = {
          rlim_cur = 8388608, 
          rlim_max = 18446744073709551615
        }
        no_loadup = 0
        junk = 0x0
        dname_arg = 0x0

Lisp Backtrace:
"make-network-process" (0xbfffd2e8)
"byte-code" (0xbfffd3d4)
"server-running-p" (0xbfffd6b4)
"server-start" (0xbfffd874)
"server-mode" (0xbfffd9e4)
0x8ae060d PVEC_COMPILED
"run-hooks" (0xbfffdc54)
(gdb) xbacktrace
"make-network-process" (0xbfffd2e8)
"byte-code" (0xbfffd3d4)
"server-running-p" (0xbfffd6b4)
"server-start" (0xbfffd874)
"server-mode" (0xbfffd9e4)
0x8ae060d PVEC_COMPILED
"run-hooks" (0xbfffdc54)

In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2011-02-03 on faure.capuchin.co.uk
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_GB.utf8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  show-paren-mode: t
  recentf-mode: t
  display-time-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <menu-bar> <help-menu> 
<send-emacs-bug-report>

Recent messages:
Loading /home/robert/elisp/hhm-config.el (source)...done
Loading /home/robert/.recentf...done
Cleaning up the recentf list...done (0 removed)
Preparing diary...
No diary entries for Friday, 4 February 2011
Preparing diary...done

Load-path shadows:
~/elisp/vm/lisp/vm-ps-print hides ~/elisp/vm-ps-print
~/elisp/vm/lisp/vm-pine hides ~/elisp/vm-pine
~/elisp/vm/lisp/vm-pcrisis hides ~/elisp/vm-pcrisis
~/elisp/vm/lisp/u-vm-color hides ~/elisp/u-vm-color
/usr/share/emacs/site-lisp/ruby-mode hides /develop/Robert/emacs-bz/emacs-trunk/lisp/progmodes/ruby-mode

Features:
(shadow sort mail-extr message sendmail rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev mail-utils gmm-utils mailheader warnings emacsbug url-util
url-parse url-vars mm-util mail-prsvr solar cal-dst cal-bahai cal-hebrew
cal-julian holidays hol-loaddefs diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs paren server org-install filesets recentf
tree-widget wid-edit ps-print ps-def lpr identica-mode easymenu
longlines parse-time xml cl autoinsert time-stamp crypt++ c-outline
filladapt time tramp tramp-compat auth-source netrc gnus-util time-date
password-cache format-spec advice help-fns advice-preload tramp-loaddefs
regexp-opt jka-compr tooltip ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind dynamic-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

-- 
Robert Marshall