unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* --with-cairo Emacs server crash and fix
@ 2019-08-08  7:01 Liam Quinlan
  2019-08-09  7:11 ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Liam Quinlan @ 2019-08-08  7:01 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3053 bytes --]

If emacs is compiled for xwindows --with-cairo, then started with --daemon,
and any packages that define a fringe bitmap are used (including builtin
flymake), then 'define-fringe-bitmap' will be called from lisp during
startup and attempt to define dynamic bitmaps when emacs has no active
frame.

This is a problem because 'init_fringe_bitmap' (in src/fringe.c) relies on
the SELECTED_FRAME macro in order to access a redisplay_interface structure
and call 'rif->define_fringe_bitmap'.  Until a frame is created for a
client session, this process will fail, causing emacs to skip calling
'rif->define_fringe_bitmap' (which should initialize 'fringe_bmp[which]'
for cairo builds), but otherwise proceed as if the bitmap in question
exists.  (note the code in question already contains the following comment:
'/* XXX Is SELECTED_FRAME OK here? */' ... it is not.)

The upshot from there is, if[/when] emacs tries to *draw* these bitmaps, it
pulls a null pointer out of 'fringe_bmp[which]' and hands it straight to
libcairo.  Predictably, libcairo retaliates with the SEGV, and it's all
over but the coredumping.


As best as I can tell, the following diff resolves the issue (at least as
it manifests when using X; I haven't experimented with other
configurations).  Style-wise it's a touch crude and hamfisted, but tbh
trying to figure out the right approach for this codebase seemed to mean a
whole lot of stumbling through giant briar patches of macro indirection,
and I bailed.  Hopefully someone familiar with all that stuff can translate
it readily enough.
[git diff against commit d5622eb6fff94714c5d5a64c98c5e02bc1be478c]

diff --git a/src/frame.h b/src/frame.h
index fa45a32d6b..94a880f4eb 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1587,6 +1587,9 @@ #define EMACS_CLASS "Emacs"

 #if defined HAVE_X_WINDOWS
 extern void x_wm_set_icon_position (struct frame *, int, int);
+  #if defined USE_CAIRO
+  extern struct redisplay_interface x_redisplay_interface;
+  #endif
 #if !defined USE_X_TOOLKIT
 extern const char *x_get_resource_string (const char *, const char *);
 #endif
diff --git a/src/fringe.c b/src/fringe.c
index d0d599223d..7a93afd418 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1482,6 +1482,10 @@ init_fringe_bitmap (int which, struct fringe_bitmap
*fb, int once_p)

       if (rif && rif->define_fringe_bitmap)
        rif->define_fringe_bitmap (which, fb->bits, fb->height, fb->width);
+#if (defined HAVE_X_WINDOWS) && (defined USE_CAIRO)
+      else
+        x_redisplay_interface.define_fringe_bitmap(which, fb->bits,
fb->height, fb->width);
+#endif

       fringe_bitmaps[which] = fb;
       if (which >= max_used_fringe_bitmap)
diff --git a/src/xterm.c b/src/xterm.c
index bbe68ef622..76fc5c21ac 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -13298,7 +13298,7 @@ x_activate_timeout_atimer (void)

 extern frame_parm_handler x_frame_parm_handlers[];

-static struct redisplay_interface x_redisplay_interface =
+struct redisplay_interface x_redisplay_interface =
   {
     x_frame_parm_handlers,
     gui_produce_glyphs,

[-- Attachment #2: Type: text/html, Size: 4397 bytes --]

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-08  7:01 Liam Quinlan
@ 2019-08-09  7:11 ` Eli Zaretskii
  0 siblings, 0 replies; 11+ messages in thread
From: Eli Zaretskii @ 2019-08-09  7:11 UTC (permalink / raw)
  To: Liam Quinlan; +Cc: emacs-devel

> From: Liam Quinlan <liamkquinlan@gmail.com>
> Date: Thu, 8 Aug 2019 03:01:39 -0400
> 
> If emacs is compiled for xwindows --with-cairo, then started with --daemon, and any packages that define a
> fringe bitmap are used (including builtin flymake), then 'define-fringe-bitmap' will be called from lisp during
> startup and attempt to define dynamic bitmaps when emacs has no active frame.
> 
> This is a problem because 'init_fringe_bitmap' (in src/fringe.c) relies on the SELECTED_FRAME macro in
> order to access a redisplay_interface structure and call 'rif->define_fringe_bitmap'.  Until a frame is created
> for a client session, this process will fail, causing emacs to skip calling 'rif->define_fringe_bitmap' (which
> should initialize 'fringe_bmp[which]' for cairo builds), but otherwise proceed as if the bitmap in question exists.
>  (note the code in question already contains the following comment: '/* XXX Is SELECTED_FRAME OK here?
> */' ... it is not.)

Is this specific to the Cairo build, or will this happen with any
build of Emacs that supports GUI frames?  In the latter case the
proposed fix is incomplete, I think.

Can you please provide a minimal reproduction recipe for reproducing
this problem, including the minimal init file?

Thanks.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
@ 2019-08-09 15:40 Liam Quinlan
  2019-08-10  9:39 ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Liam Quinlan @ 2019-08-09 15:40 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3928 bytes --]

It is definitely specific to cairo builds.  The 'fringe_bmp' array (not to
be confused with the 'fringe_bitmaps' array) has a cairo api type and is
declared behind #ifdef USE_CAIRO.

I *think* the minimal init file to reproduce is actually '-Q'... provided
you can get flymake to display its error fringe indicator, which
embarrassingly I cannot (no backends will run... definitely unrelated,
probably self inflicted).   Assuming you can accomplish this
(flymake-error-bitmap uses flymake-double-exclaimation-mark,
flymake-fringe-indicator-position isn't nil, fringe-mode is on, etc), the
steps to reproduce are very simple:

1. build --with-cairo, using any x toolkit
2. start an emacs server with --daemon option  (ie don't 'M-x server-mode')
3: connect normally with emacsclient
4: open a file with syntax errors and more than one screen of text
5: get flymake to display its error indicators
6: scroll up and down.  It won't take very long.

Should it prove easier somehow flycheck and sesman also define custom
bitmaps, either of which will do.  It can be any fringe-bitmap defined in
package that gets loaded during the daemon process's own startup.  Packages
that don't load until emacsclient connects are fine, as by that point an x
frame exists and SELECTED_FRAME will work.

I'm experiencing this building from head, but last I checked building the
26 branch didn't change anything.



Possibly also useful: the following gdb script is more or less what my
actual investigation lead to.  It will start the server process, and break
each time a fringe bitmap initialization needs to call
rif->define_fringe_bitmap but isn't able to. The values of 'which' when
this occurs will be the fringe_bmp indexes that go uninitialized and cause
the crash (culprit index for a given crash can be recovered from the
coredump).  It is possible to monkey-patch a server instance during startup
by manually calling x_redisplay_interface.define_fringe_bitmap yourself
each time the breakpoint fires.


set print pretty on
set print array on
set print array-indexes on

file path/to/built/emacs
set args --fg-daemon=cairo

break src/fringe.c:1481 if ! rif
commands
  printf "\nwhich: %d\n\n",which
  print "init_fringe_bitmap(): !(once_p || rif)"
  print "  after [...]"
  print "  if (!once_p) {"
  print "     struct redisplay_interface *rif = FRAME_RIF (SELECTED_FRAME
());'\n"
  list
end





also, improved diff below: exposes the x_redisplay_interface structure via
const pointer instead of directly

diff --git a/src/frame.h b/src/frame.h
index fa45a32d6b..fa4659eed0 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1587,6 +1587,9 @@ #define EMACS_CLASS "Emacs"

 #if defined HAVE_X_WINDOWS
 extern void x_wm_set_icon_position (struct frame *, int, int);
+  #if defined USE_CAIRO
+  extern struct redisplay_interface const * const
x_redisplay_interface_ptr;
+  #endif
 #if !defined USE_X_TOOLKIT
 extern const char *x_get_resource_string (const char *, const char *);
 #endif
diff --git a/src/fringe.c b/src/fringe.c
index d0d599223d..a97c5e98c1 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1482,6 +1482,10 @@ init_fringe_bitmap (int which, struct fringe_bitmap
*fb, int once_p)

       if (rif && rif->define_fringe_bitmap)
        rif->define_fringe_bitmap (which, fb->bits, fb->height, fb->width);
+#if (defined HAVE_X_WINDOWS) && (defined USE_CAIRO)
+      else
+        x_redisplay_interface_ptr->define_fringe_bitmap(which, fb->bits,
fb->height, fb->width);
+#endif

       fringe_bitmaps[which] = fb;
       if (which >= max_used_fringe_bitmap)
diff --git a/src/xterm.c b/src/xterm.c
index bbe68ef622..3cb779b39c 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -13334,6 +13334,7 @@ x_activate_timeout_atimer (void)
     x_hide_hourglass
   };

+struct redisplay_interface const * const x_redisplay_interface_ptr =
&x_redisplay_interface;

 /* This function is called when the last frame on a display is deleted. */
 void

[-- Attachment #2: Type: text/html, Size: 6093 bytes --]

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-09 15:40 --with-cairo Emacs server crash and fix Liam Quinlan
@ 2019-08-10  9:39 ` Eli Zaretskii
  2019-08-12 10:42   ` Liam Quinlan
  2019-08-12 10:48   ` Liam Quinlan
  0 siblings, 2 replies; 11+ messages in thread
From: Eli Zaretskii @ 2019-08-10  9:39 UTC (permalink / raw)
  To: Liam Quinlan; +Cc: emacs-devel

> From: Liam Quinlan <liamkquinlan@gmail.com>
> Date: Fri, 9 Aug 2019 11:40:21 -0400
> 
> It is definitely specific to cairo builds.  The 'fringe_bmp' array (not to be confused with the 'fringe_bitmaps'
> array) has a cairo api type and is declared behind #ifdef USE_CAIRO.

I see a similar (w32-specific) variable in the MS-Windows build, so
this is at least relevant to MS-Windows as well.

> I *think* the minimal init file to reproduce is actually '-Q'... provided you can get flymake to display its error
> fringe indicator, which embarrassingly I cannot (no backends will run... definitely unrelated, probably self
> inflicted).   Assuming you can accomplish this (flymake-error-bitmap uses flymake-double-exclaimation-mark,
> flymake-fringe-indicator-position isn't nil, fringe-mode is on, etc), the steps to reproduce are very simple:
> 
> 1. build --with-cairo, using any x toolkit
> 2. start an emacs server with --daemon option  (ie don't 'M-x server-mode')
> 3: connect normally with emacsclient
> 4: open a file with syntax errors and more than one screen of text
> 5: get flymake to display its error indicators
> 6: scroll up and down.  It won't take very long.

Can you please show a C-level backtrace from the crash, and also the
result of xbacktrace (this will be automatic if you start GDB in the
Emacs src/ directory)?  Without that, I'm not sure I understand the
scenario, since after the emacsclient connection Emacs already has a
fringe-capable frame, so fringe related code should work.  I'm
probably missing something.

Also, I'd like to be able to reproduce without flymake.  There are
built-in features that define bitmaps, like indicate-buffer-boundaries
and indicate-empty-lines; can they be used to reproduce the problem
instead of flymake?

> Should it prove easier somehow flycheck and sesman also define custom bitmaps, either of which will do.  It
> can be any fringe-bitmap defined in package that gets loaded during the daemon process's own startup. 
> Packages that don't load until emacsclient connects are fine, as by that point an x frame exists and
> SELECTED_FRAME will work.

See, you are talking about "packages loaded during startup", but
didn't show any init files to that effect.  This makes it hard to
reproduce the problem and debug it independently.

Thanks.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-10  9:39 ` Eli Zaretskii
@ 2019-08-12 10:42   ` Liam Quinlan
  2019-08-12 10:48   ` Liam Quinlan
  1 sibling, 0 replies; 11+ messages in thread
From: Liam Quinlan @ 2019-08-12 10:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3042 bytes --]

Sorry for the delay responding.  It looks like you were right about the w32
version being related; I'd noticed it previously but as dismissed it as a
different platform's private static.  Something similar to my original
suggestion should work for the windows build too, but I don't have a
Windows box to test on.

Here's an annotated log of a full debugging session (which includes the
backtrace you asked for).  I've tried to answer your questions that way;
hopefully I'll have better luck communicating with the added context.

https://pastebin.com/HBB46VC5

cheers


On Sat, Aug 10, 2019, 05:39 Eli Zaretskii, <eliz@gnu.org> wrote:

> > From: Liam Quinlan <liamkquinlan@gmail.com>
> > Date: Fri, 9 Aug 2019 11:40:21 -0400
> >
> > It is definitely specific to cairo builds.  The 'fringe_bmp' array (not
> to be confused with the 'fringe_bitmaps'
> > array) has a cairo api type and is declared behind #ifdef USE_CAIRO.
>
> I see a similar (w32-specific) variable in the MS-Windows build, so
> this is at least relevant to MS-Windows as well.
>
> > I *think* the minimal init file to reproduce is actually '-Q'...
> provided you can get flymake to display its error
> > fringe indicator, which embarrassingly I cannot (no backends will run...
> definitely unrelated, probably self
> > inflicted).   Assuming you can accomplish this (flymake-error-bitmap
> uses flymake-double-exclaimation-mark,
> > flymake-fringe-indicator-position isn't nil, fringe-mode is on, etc),
> the steps to reproduce are very simple:
> >
> > 1. build --with-cairo, using any x toolkit
> > 2. start an emacs server with --daemon option  (ie don't 'M-x
> server-mode')
> > 3: connect normally with emacsclient
> > 4: open a file with syntax errors and more than one screen of text
> > 5: get flymake to display its error indicators
> > 6: scroll up and down.  It won't take very long.
>
> Can you please show a C-level backtrace from the crash, and also the
> result of xbacktrace (this will be automatic if you start GDB in the
> Emacs src/ directory)?  Without that, I'm not sure I understand the
> scenario, since after the emacsclient connection Emacs already has a
> fringe-capable frame, so fringe related code should work.  I'm
> probably missing something.
>
> Also, I'd like to be able to reproduce without flymake.  There are
> built-in features that define bitmaps, like indicate-buffer-boundaries
> and indicate-empty-lines; can they be used to reproduce the problem
> instead of flymake?
>
> > Should it prove easier somehow flycheck and sesman also define custom
> bitmaps, either of which will do.  It
> > can be any fringe-bitmap defined in package that gets loaded during the
> daemon process's own startup.
> > Packages that don't load until emacsclient connects are fine, as by that
> point an x frame exists and
> > SELECTED_FRAME will work.
>
> See, you are talking about "packages loaded during startup", but
> didn't show any init files to that effect.  This makes it hard to
> reproduce the problem and debug it independently.
>
> Thanks.
>

[-- Attachment #2: Type: text/html, Size: 3880 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-10  9:39 ` Eli Zaretskii
  2019-08-12 10:42   ` Liam Quinlan
@ 2019-08-12 10:48   ` Liam Quinlan
  2019-08-12 16:59     ` Eli Zaretskii
  1 sibling, 1 reply; 11+ messages in thread
From: Liam Quinlan @ 2019-08-12 10:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 6415 bytes --]

... Whoops, I guess gdb doesn't log !cmd output.  Here's what should be in
that awkward empty spot.



set print pretty on
set print array on
set print array-indexes on
set style enabled off
set style sources off
set pagination off
set logging on

tbreak _start
commands
  set variable $bitmap_counter = 0
  continue
end

break fringe.c:1475 if once_p
commands
  set variable $bitmap_counter = (which > $bitmap_counter ? which :
$bitmap_counter)
  printf ">>>> init_fringe_bitmap(): end of function, once_p <<<<"
  if fringe_bitmaps
    set variable $loop = 0
    while $loop <=q $bitmap_counter
      printf "fringe_bitmaps[%d]: %p\n",$loop,fringe_bitmaps[$loop]
      set variable $loop = $loop + 1
    end
  else
    print "fringe_bitmaps == NULL"
  end
  printf "\n    which: %d\n\n",which
  continue
end

break fringe.c:1487
commands
  set variable $bitmap_counter = (which > $bitmap_counter ? which :
$bitmap_counter)
  printf "\n\n>>>> init_fringe_bitmap(): end of function, !once_p <<<<\n\n"
  if rif
    print "rif: exists"
    printf "define_fringe_bitmap: %s\n",rif->define_fringe_bitmap ?
"available" : "null"
  else
    print "rif: unavailable"
  end

  set variable $loop = 0
  while $loop <= $bitmap_counter
    printf "fringe_bitmaps[%d]: %p\n",$loop,fringe_bitmaps[$loop]
    set variable $loop = $loop + 1
  end
  if fringe_bmp
    print ""
    set variable $loop = 0
    while $loop <= $bitmap_counter
      printf "fringe_bmp[%d]: %p\n",$loop,fringe_bmp[$loop]
      set variable $loop = $loop + 1
    end
  else
    print "fringe_bmp == NULL"
  end
  printf "\n    which: %d\n\n",which
  continue
end

tbreak emacs.c:2086
commands
  printf "\n\n>>>> main(): emacs.c <<<<\n\n"
  printf "$bitmap_counter:  %d\n",$bitmap_counter
  set variable $loop = 0
  while $loop <= $bitmap_counter
    printf "fringe_bitmaps[%d]: %p\n",$loop,fringe_bitmaps[$loop]
    set variable $loop = $loop + 1
  end
  if fringe_bmp
    print ""
    set variable $loop = 0
    while $loop <= $bitmap_counter
      printf "fringe_bmp[%d]: %p\n",$loop,fringe_bmp[$loop]
      set variable $loop = $loop + 1
    end
  else
    printf "fringe_bmp == NULL\n\n"
  end
  printf "\n\n\n\
 >>>>>>>>>>>>>====================================<<<<<<<<<<<<<  \n\
      This is the end of the pre-local-load phase of startup.    \n\
      So far nothing has gone wrong.  Next, that changes.        \n\
 >>>>>>>>>>>>>====================================<<<<<<<<<<<<<  \n\n\n"
  tbreak pselect
  commands
    printf "\n\n\n\
 >>>>>>>>>>>>>====================================<<<<<<<<<<<<<  \n\
      Here's the *actual* end of what happens before connecting  \n\
      a client session.                                          \n\
      We've loaded three dynamic bitmaps from package files.     \n\
      They've been initialized into fringe_bitmaps, and so far as\n\
      emacs is concerned, are ready to use should GUI client     \n\
      connect later.  But our test for whether initializing those\n\
      bitmaps required calling rif->define_fringe_bitmap(), ie,  \n\
      'rif && rif->define_fringe_bitmap', came up false.         \n\
      Obviously that's not true; when we start a GUI frame we    \n\
      will need the cairo structures it creates.  The way things \n\
      stand, they won't be, but emacs will assume they are and   \n\
      try to use them.                                         \n\n\
      Connecting a client frame and opening a file that will     \n\
      cause us to try to draw the bitmaps...                     \n\
 >>>>>>>>>>>>>====================================<<<<<<<<<<<<<  \n\n\n"
    continue
  end
  continue
end

printf "\n\n ================================= \n\n\
   CWD: ~/self/workbench/emacs/master/src\n\
   CMDLINE: gdb -x ../../cairo_bug/gdb_script \\\n\
     --args ./emacs --fg-daemon=cairo \n\n\
   gdb_script contents: \n\n"

!cat ../../cairo_bug/gdb_script

printf "\n\nhere goes nothing...\n\n"


On Sat, Aug 10, 2019, 05:39 Eli Zaretskii, <eliz@gnu.org> wrote:

> > From: Liam Quinlan <liamkquinlan@gmail.com>
> > Date: Fri, 9 Aug 2019 11:40:21 -0400
> >
> > It is definitely specific to cairo builds.  The 'fringe_bmp' array (not
> to be confused with the 'fringe_bitmaps'
> > array) has a cairo api type and is declared behind #ifdef USE_CAIRO.
>
> I see a similar (w32-specific) variable in the MS-Windows build, so
> this is at least relevant to MS-Windows as well.
>
> > I *think* the minimal init file to reproduce is actually '-Q'...
> provided you can get flymake to display its error
> > fringe indicator, which embarrassingly I cannot (no backends will run...
> definitely unrelated, probably self
> > inflicted).   Assuming you can accomplish this (flymake-error-bitmap
> uses flymake-double-exclaimation-mark,
> > flymake-fringe-indicator-position isn't nil, fringe-mode is on, etc),
> the steps to reproduce are very simple:
> >
> > 1. build --with-cairo, using any x toolkit
> > 2. start an emacs server with --daemon option  (ie don't 'M-x
> server-mode')
> > 3: connect normally with emacsclient
> > 4: open a file with syntax errors and more than one screen of text
> > 5: get flymake to display its error indicators
> > 6: scroll up and down.  It won't take very long.
>
> Can you please show a C-level backtrace from the crash, and also the
> result of xbacktrace (this will be automatic if you start GDB in the
> Emacs src/ directory)?  Without that, I'm not sure I understand the
> scenario, since after the emacsclient connection Emacs already has a
> fringe-capable frame, so fringe related code should work.  I'm
> probably missing something.
>
> Also, I'd like to be able to reproduce without flymake.  There are
> built-in features that define bitmaps, like indicate-buffer-boundaries
> and indicate-empty-lines; can they be used to reproduce the problem
> instead of flymake?
>
> > Should it prove easier somehow flycheck and sesman also define custom
> bitmaps, either of which will do.  It
> > can be any fringe-bitmap defined in package that gets loaded during the
> daemon process's own startup.
> > Packages that don't load until emacsclient connects are fine, as by that
> point an x frame exists and
> > SELECTED_FRAME will work.
>
> See, you are talking about "packages loaded during startup", but
> didn't show any init files to that effect.  This makes it hard to
> reproduce the problem and debug it independently.
>
> Thanks.
>

[-- Attachment #2: Type: text/html, Size: 10615 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-12 10:48   ` Liam Quinlan
@ 2019-08-12 16:59     ` Eli Zaretskii
  2019-08-12 20:00       ` Liam Quinlan
  2019-08-13  2:52       ` Liam Quinlan
  0 siblings, 2 replies; 11+ messages in thread
From: Eli Zaretskii @ 2019-08-12 16:59 UTC (permalink / raw)
  To: Liam Quinlan; +Cc: emacs-devel

> From: Liam Quinlan <liamkquinlan@gmail.com>
> Date: Mon, 12 Aug 2019 06:48:25 -0400
> Cc: emacs-devel@gnu.org
> 
> ... Whoops, I guess gdb doesn't log !cmd output.  Here's what should be in that awkward empty spot.

Thanks.  This and the GDB session adds some important info, but
there's still a gap in my understanding of the problem.  To close that
gap, please show the C and Lisp backtrace from the breakpoint at
fringe.c:1487 which prints "rif: unavailable".  That will allow me to
understand which Lisp code tried to define fringe bitmaps when no GUI
frame is available.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-12 16:59     ` Eli Zaretskii
@ 2019-08-12 20:00       ` Liam Quinlan
  2019-08-13  2:52       ` Liam Quinlan
  1 sibling, 0 replies; 11+ messages in thread
From: Liam Quinlan @ 2019-08-12 20:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 62215 bytes --]

Sorry if I've been slow on the uptake for what to include.  This kinda
stuff is still new territory for me.

Let me know how else I can help, and/or what to take a stab at improving.


[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".

Temporary breakpoint 3, 0x000000000041a5d0 in _start ()
[New Thread 0x7ffff0fcd700 (LWP 14482)]
Loading async-bytecomp...
Loading async-bytecomp...done
Loading auto-compile...
Loading auto-compile...done
Loading beacon...
Loading beacon...done
Loading cider-test...
[Detaching after vfork from child process 14483]
[Detaching after vfork from child process 14484]

Thread 1 "emacs" hit Breakpoint 4, init_fringe_bitmap (which=which@entry=24,
fb=fb@entry=0x12249e0, once_p=once_p@entry=0) at fringe.c:1487
1487          if (which >= max_used_fringe_bitmap)


>>>> init_fringe_bitmap(): end of function, !once_p <<<<





fringe.c:1487
rif unavailable (which: 24)

Stack level 0, frame at 0x7fffffff7bd0:
 rip = 0x5d6846 in init_fringe_bitmap (fringe.c:1487); saved rip = 0x5d7239
 called by frame at 0x7fffffff7c50
 source language c.
 Arglist at 0x7fffffff7ba8, args: which=which@entry=24, fb=fb@entry=0x12249e0,
once_p=once_p@entry=0
 Locals at 0x7fffffff7ba8, Previous frame's sp is 0x7fffffff7bd0
 Saved registers:
  rbx at 0x7fffffff7bb0, rbp at 0x7fffffff7bb8, r12 at 0x7fffffff7bc0, rip
at 0x7fffffff7bc8
rif = 0x0
#0  0x00000000005d6846 in init_fringe_bitmap (which=which@entry=24,
fb=fb@entry=0x12249e0, once_p=once_p@entry=0) at fringe.c:1487
#1  0x00000000005d7239 in Fdefine_fringe_bitmap (bitmap=XIL(0x21ac9c0),
bits=XIL(0x2b7fc25), height=<optimized out>, width=<optimized out>,
align=<optimized out>) at fringe.c:1624
#2  0x000000000056665a in funcall_subr (subr=0x9bc040
<Sdefine_fringe_bitmap>, numargs=numargs@entry=5,
args=args@entry=0x7fffffff7d10)
at eval.c:2888
#3  0x0000000000565359 in Ffuncall (nargs=6, args=args@entry=0x7fffffff7d08)
at lisp.h:2076
#4  0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(6),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#5  0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#6  0x000000000056741d in eval_sub (form=form@entry=XIL(0x2bd1a83)) at
lisp.h:2076
#7  0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff80b0, sourcename=XIL(0x2bd3d34),
sourcename@entry=XIL(0x2bcd6b4), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#8  0x000000000058ad64 in Fload (file=file@entry=XIL(0xea0ee4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#9  0x000000000058aebf in save_match_data_load (file=file@entry=XIL(0xea0ee4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#10 0x00000000005729a4 in Frequire (feature=XIL(0x476ba0),
filename=<optimized out>, noerror=XIL(0)) at lisp.h:1366
#11 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff83e0) at eval.c:2881
#12 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff83d8)
at lisp.h:2076
#13 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff83d8) at
eval.c:2382
#14 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff83d8) at eval.c:2856
#15 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff83d0)
at lisp.h:2076
#16 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffff85f0) at bytecode.c:633
#17 0x00000000005677f0 in funcall_lambda (fun=XIL(0x1828605),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffff85f0) at
lisp.h:1819
#18 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffff85e8)
at eval.c:2805
#19 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#20 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#21 0x000000000056741d in eval_sub (form=form@entry=XIL(0x2a70243)) at
lisp.h:2076
#22 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff8a00, sourcename=XIL(0x2ac6414),
sourcename@entry=XIL(0x2ac3fd4), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#23 0x000000000058ad64 in Fload (file=file@entry=XIL(0x28c0d14),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#24 0x000000000058aebf in save_match_data_load (file=file@entry=XIL(0x28c0d14),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#25 0x00000000005729a4 in Frequire (feature=XIL(0x16c6610),
filename=<optimized out>, noerror=XIL(0)) at lisp.h:1366
#26 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff8d40) at eval.c:2881
#27 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff8d38)
at lisp.h:2076
#28 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff8d38) at
eval.c:2382
#29 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff8d38) at eval.c:2856
#30 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff8d30)
at lisp.h:2076
#31 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffff8f30) at bytecode.c:633
#32 0x00000000005677f0 in funcall_lambda (fun=XIL(0x1828605),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffff8f30) at
lisp.h:1819
#33 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffff8f28)
at eval.c:2805
#34 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(10),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#35 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#36 0x000000000056741d in eval_sub (form=form@entry=XIL(0x286e883)) at
lisp.h:2076
#37 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff9340, sourcename=XIL(0x28c0b24),
sourcename@entry=XIL(0x28be714), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#38 0x000000000058ad64 in Fload (file=file@entry=XIL(0x18947d4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#39 0x000000000058aebf in save_match_data_load (file=file@entry=XIL(0x18947d4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#40 0x00000000005729a4 in Frequire (feature=XIL(0xe0b8d0),
filename=<optimized out>, noerror=XIL(0)) at lisp.h:1366
#41 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff9680) at eval.c:2881
#42 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff9678)
at lisp.h:2076
#43 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff9678) at
eval.c:2382
#44 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff9678) at eval.c:2856
#45 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff9670)
at lisp.h:2076
#46 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffff9870) at bytecode.c:633
#47 0x00000000005677f0 in funcall_lambda (fun=XIL(0x1828605),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffff9870) at
lisp.h:1819
#48 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffff9868)
at eval.c:2805
#49 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(10),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#50 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#51 0x000000000056741d in eval_sub (form=form@entry=XIL(0x18932d3)) at
lisp.h:2076
#52 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff9c90, sourcename=XIL(0x1894694),
sourcename@entry=XIL(0x188df14), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#53 0x000000000058ad64 in Fload (file=XIL(0xeaf3b4), noerror=<optimized
out>, nomessage=XIL(0), nosuffix=<optimized out>, must_suffix=<optimized
out>) at lisp.h:1024
#54 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff9f40) at eval.c:2888
#55 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff9f38)
at lisp.h:2076
#56 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff9f38) at
eval.c:2382
#57 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff9f38) at eval.c:2856
#58 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff9f30)
at lisp.h:2076
#59 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffa168) at bytecode.c:633
#60 0x00000000005677f0 in funcall_lambda (fun=XIL(0x18282e5),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffa168) at
lisp.h:1819
#61 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffa160)
at eval.c:2805
#62 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(14),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffa478) at bytecode.c:633
#63 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16c245d),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffa478) at
lisp.h:1819
#64 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffa470)
at eval.c:2805
#65 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(15),
args_template=args_template@entry=make_fixnum(385), nargs=nargs@entry=426,
args=<optimized out>, args@entry=0x7fffffffa788) at bytecode.c:633
#66 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16e3675),
nargs=nargs@entry=426, arg_vector=arg_vector@entry=0x7fffffffa788) at
lisp.h:1819
#67 0x0000000000565369 in Ffuncall (nargs=nargs@entry=427,
args=args@entry=0x7fffffffa780)
at eval.c:2805
#68 0x0000000000565797 in Fapply (nargs=3, args=0x7fffffffb618) at
eval.c:2425
#69 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffb618) at eval.c:2856
#70 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffb610)
at lisp.h:2076
#71 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=425,
args=<optimized out>, args@entry=0x7fffffffb830) at bytecode.c:633
#72 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1a73a1d),
nargs=nargs@entry=425, arg_vector=arg_vector@entry=0x7fffffffb830) at
lisp.h:1819
#73 0x0000000000565369 in Ffuncall (nargs=426, args=args@entry=0x7fffffffb828)
at eval.c:2805
#74 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(426),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#75 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#76 0x000000000056741d in eval_sub (form=form@entry=XIL(0x1326333)) at
lisp.h:2076
#77 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffcdc0, sourcename=XIL(0x13e5944),
sourcename@entry=XIL(0x13e1c94), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#78 0x000000000058ad64 in Fload (file=XIL(0x13e1b14), noerror=<optimized
out>, nomessage=XIL(0x7ffff0cfdea0), nosuffix=<optimized out>,
must_suffix=<optimized out>) at lisp.h:1024
#79 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffcf90) at eval.c:2888
#80 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffcf88)
at lisp.h:2076
#81 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(18),
args_template=args_template@entry=make_fixnum(769), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffd2c0) at bytecode.c:633
#82 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1ade005),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffd2c0) at
lisp.h:1819
#83 0x0000000000565369 in Ffuncall (nargs=4, args=args@entry=0x7fffffffd2b8)
at eval.c:2805
#84 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdb18) at bytecode.c:633
#85 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1adb10d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdb18) at
lisp.h:1819
#86 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffdb10)
at eval.c:2805
#87 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdec0) at bytecode.c:633
#88 0x00000000005677f0 in funcall_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdec0) at
lisp.h:1819
#89 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
args=<optimized out>, count=count@entry=4) at eval.c:2935
#90 0x00000000005674fa in eval_sub (form=form@entry=XIL(0x7ffff1c3663b)) at
eval.c:2319
#91 0x0000000000568a57 in Feval (form=XIL(0x7ffff1c3663b),
lexical=lexical@entry=XIL(0)) at eval.c:2103
#92 0x00000000004ed85c in top_level_2 () at lisp.h:1024
#93 0x000000000056478e in internal_condition_case (bfun=bfun@entry=0x4ed847
<top_level_2>, handlers=handlers@entry=XIL(0x90), hfun=hfun@entry=0x4f1bfd
<cmd_error>) at eval.c:1355
#94 0x00000000004ed81b in top_level_1 (ignore=ignore@entry=XIL(0)) at
lisp.h:1024
#95 0x0000000000564705 in internal_catch (tag=tag@entry=XIL(0xd2f0),
func=func@entry=0x4ed7f9 <top_level_1>, arg=arg@entry=XIL(0)) at eval.c:1116
#96 0x00000000004ed7a5 in command_loop () at lisp.h:1024
#97 0x00000000004f1899 in recursive_edit_1 () at keyboard.c:714
#98 0x00000000004f1b4d in Frecursive_edit () at keyboard.c:786
#99 0x00000000004ecf9e in main (argc=2, argv=<optimized out>) at
emacs.c:2086

Lisp Backtrace:
  "define-fringe-bitmap" (0xffff7d10)
  "byte-code" (0xffff7ec0)
0x9b7440 PVEC_SUBR
  "apply" (0xffff83d8)
  "require" (0xffff85f0)
  "byte-code" (0xffff8810)
0x9b7440 PVEC_SUBR
  "apply" (0xffff8d38)
  "require" (0xffff8f30)
  "byte-code" (0xffff9150)
0x9b7440 PVEC_SUBR
  "apply" (0xffff9678)
  "require" (0xffff9870)
  "byte-code" (0xffff9aa0)
0x9b8e00 PVEC_SUBR
  "apply" (0xffff9f38)
  "load" (0xffffa168)
  "custom-load-symbol" (0xffffa478)
  "custom-theme-set-variables" (0xffffa788)
  "apply" (0xffffb618)
  "custom-set-variables" (0xffffb830)
  "byte-code" (0xffffcbd0)
  "load" (0xffffcf90)
  "startup--load-user-init-file" (0xffffd2c0)
  "command-line" (0xffffdb18)
  "normal-top-level" (0xffffdec0)


Loading cider-test...done
Loading company-statistics...
Loading company-statistics...done
Loading cua-base...
Loading cua-base...done
Loading completion...
Loading completion...done
Loading eldoc-eval...
Loading eldoc-eval...done
Loading flycheck-pos-tip...

Thread 1 "emacs" hit Breakpoint 4, init_fringe_bitmap (which=which@entry=25,
fb=fb@entry=0xaff770, once_p=once_p@entry=0) at fringe.c:1487
1487          if (which >= max_used_fringe_bitmap)


>>>> init_fringe_bitmap(): end of function, !once_p <<<<





fringe.c:1487
rif unavailable (which: 25)

Stack level 0, frame at 0x7fffffff8db0:
 rip = 0x5d6846 in init_fringe_bitmap (fringe.c:1487); saved rip = 0x5d7239
 called by frame at 0x7fffffff8e30
 source language c.
 Arglist at 0x7fffffff8d88, args: which=which@entry=25, fb=fb@entry=0xaff770,
once_p=once_p@entry=0
 Locals at 0x7fffffff8d88, Previous frame's sp is 0x7fffffff8db0
 Saved registers:
  rbx at 0x7fffffff8d90, rbp at 0x7fffffff8d98, r12 at 0x7fffffff8da0, rip
at 0x7fffffff8da8
rif = 0x0
#0  0x00000000005d6846 in init_fringe_bitmap (which=which@entry=25,
fb=fb@entry=0xaff770, once_p=once_p@entry=0) at fringe.c:1487
#1  0x00000000005d7239 in Fdefine_fringe_bitmap (bitmap=XIL(0x643530),
bits=XIL(0x2d6fe75), height=<optimized out>, width=<optimized out>,
align=<optimized out>) at fringe.c:1624
#2  0x000000000056665a in funcall_subr (subr=0x9bc040
<Sdefine_fringe_bitmap>, numargs=numargs@entry=2,
args=args@entry=0x7fffffff8ef0)
at eval.c:2888
#3  0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff8ee8)
at lisp.h:2076
#4  0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(20),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#5  0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#6  0x000000000056741d in eval_sub (form=form@entry=XIL(0xe44f43)) at
lisp.h:2076
#7  0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff9360, sourcename=XIL(0x1a8b444),
sourcename@entry=XIL(0xce3b94), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#8  0x000000000058ad64 in Fload (file=file@entry=XIL(0x1244064),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#9  0x000000000058aebf in save_match_data_load (file=file@entry=XIL(0x1244064),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#10 0x00000000005729a4 in Frequire (feature=XIL(0x81a590),
filename=<optimized out>, noerror=XIL(0)) at lisp.h:1366
#11 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff96a0) at eval.c:2881
#12 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff9698)
at lisp.h:2076
#13 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff9698) at
eval.c:2382
#14 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff9698) at eval.c:2856
#15 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff9690)
at lisp.h:2076
#16 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffff9890) at bytecode.c:633
#17 0x00000000005677f0 in funcall_lambda (fun=XIL(0x1828605),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffff9890) at
lisp.h:1819
#18 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffff9888)
at eval.c:2805
#19 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(10),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#20 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#21 0x000000000056741d in eval_sub (form=form@entry=XIL(0xbd39b3)) at
lisp.h:2076
#22 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffff9c90, sourcename=XIL(0xdfba54),
sourcename@entry=XIL(0x2c46884), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#23 0x000000000058ad64 in Fload (file=XIL(0x1188ae4), noerror=<optimized
out>, nomessage=XIL(0), nosuffix=<optimized out>, must_suffix=<optimized
out>) at lisp.h:1024
#24 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=1, args=args@entry=0x7fffffff9f40) at eval.c:2888
#25 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffff9f38)
at lisp.h:2076
#26 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffff9f38) at
eval.c:2382
#27 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffff9f38) at eval.c:2856
#28 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff9f30)
at lisp.h:2076
#29 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffa168) at bytecode.c:633
#30 0x00000000005677f0 in funcall_lambda (fun=XIL(0x18282e5),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffa168) at
lisp.h:1819
#31 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffa160)
at eval.c:2805
#32 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(14),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffa478) at bytecode.c:633
#33 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16c245d),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffa478) at
lisp.h:1819
#34 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffa470)
at eval.c:2805
#35 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(15),
args_template=args_template@entry=make_fixnum(385), nargs=nargs@entry=426,
args=<optimized out>, args@entry=0x7fffffffa788) at bytecode.c:633
#36 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16e3675),
nargs=nargs@entry=426, arg_vector=arg_vector@entry=0x7fffffffa788) at
lisp.h:1819
#37 0x0000000000565369 in Ffuncall (nargs=nargs@entry=427,
args=args@entry=0x7fffffffa780)
at eval.c:2805
#38 0x0000000000565797 in Fapply (nargs=3, args=0x7fffffffb618) at
eval.c:2425
#39 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffb618) at eval.c:2856
#40 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffb610)
at lisp.h:2076
#41 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=425,
args=<optimized out>, args@entry=0x7fffffffb830) at bytecode.c:633
#42 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1a73a1d),
nargs=nargs@entry=425, arg_vector=arg_vector@entry=0x7fffffffb830) at
lisp.h:1819
#43 0x0000000000565369 in Ffuncall (nargs=426, args=args@entry=0x7fffffffb828)
at eval.c:2805
#44 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(426),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#45 0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#46 0x000000000056741d in eval_sub (form=form@entry=XIL(0x1326333)) at
lisp.h:2076
#47 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffcdc0, sourcename=XIL(0x13e5944),
sourcename@entry=XIL(0x13e1c94), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#48 0x000000000058ad64 in Fload (file=XIL(0x13e1b14), noerror=<optimized
out>, nomessage=XIL(0x7ffff0cfdea0), nosuffix=<optimized out>,
must_suffix=<optimized out>) at lisp.h:1024
#49 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffcf90) at eval.c:2888
#50 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffcf88)
at lisp.h:2076
#51 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(18),
args_template=args_template@entry=make_fixnum(769), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffd2c0) at bytecode.c:633
#52 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1ade005),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffd2c0) at
lisp.h:1819
#53 0x0000000000565369 in Ffuncall (nargs=4, args=args@entry=0x7fffffffd2b8)
at eval.c:2805
#54 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdb18) at bytecode.c:633
#55 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1adb10d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdb18) at
lisp.h:1819
#56 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffdb10)
at eval.c:2805
#57 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdec0) at bytecode.c:633
#58 0x00000000005677f0 in funcall_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdec0) at
lisp.h:1819
#59 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
args=<optimized out>, count=count@entry=4) at eval.c:2935
#60 0x00000000005674fa in eval_sub (form=form@entry=XIL(0x7ffff1c3663b)) at
eval.c:2319
#61 0x0000000000568a57 in Feval (form=XIL(0x7ffff1c3663b),
lexical=lexical@entry=XIL(0)) at eval.c:2103
#62 0x00000000004ed85c in top_level_2 () at lisp.h:1024
#63 0x000000000056478e in internal_condition_case (bfun=bfun@entry=0x4ed847
<top_level_2>, handlers=handlers@entry=XIL(0x90), hfun=hfun@entry=0x4f1bfd
<cmd_error>) at eval.c:1355
#64 0x00000000004ed81b in top_level_1 (ignore=ignore@entry=XIL(0)) at
lisp.h:1024
#65 0x0000000000564705 in internal_catch (tag=tag@entry=XIL(0xd2f0),
func=func@entry=0x4ed7f9 <top_level_1>, arg=arg@entry=XIL(0)) at eval.c:1116
#66 0x00000000004ed7a5 in command_loop () at lisp.h:1024
#67 0x00000000004f1899 in recursive_edit_1 () at keyboard.c:714
#68 0x00000000004f1b4d in Frecursive_edit () at keyboard.c:786
#69 0x00000000004ecf9e in main (argc=2, argv=<optimized out>) at
emacs.c:2086

Lisp Backtrace:
  "define-fringe-bitmap" (0xffff8ef0)
  "byte-code" (0xffff9170)
0x9b7440 PVEC_SUBR
  "apply" (0xffff9698)
  "require" (0xffff9890)
  "byte-code" (0xffff9aa0)
0x9b8e00 PVEC_SUBR
  "apply" (0xffff9f38)
  "load" (0xffffa168)
  "custom-load-symbol" (0xffffa478)
  "custom-theme-set-variables" (0xffffa788)
  "apply" (0xffffb618)
  "custom-set-variables" (0xffffb830)
  "byte-code" (0xffffcbd0)
  "load" (0xffffcf90)
  "startup--load-user-init-file" (0xffffd2c0)
  "command-line" (0xffffdb18)
  "normal-top-level" (0xffffdec0)


Loading flycheck-pos-tip...done
Loading auto-complete...
Loading auto-complete...done
Loading auto-highlight-symbol...
Loading auto-highlight-symbol...done
Loading display-line-numbers...
Loading display-line-numbers...done
Loading highlight-operators...
Loading highlight-operators...done
Loading hl-line...
Loading hl-line...done
Loading paren-face...
Loading paren-face...done
Loading gnus...
[Detaching after vfork from child process 14485]
Loading gnus...done
Loading lisp-extra-font-lock...
Loading lisp-extra-font-lock...done
Loading modern-cpp-font-lock...
Loading modern-cpp-font-lock...done
Loading projectile...
Loading projectile...done
Loading semantic...
Loading semantic...done
Loading shell-switcher...
Loading shell-switcher...done
Loading paren...
Loading paren...done
Loading smart-cursor-color...
Loading smart-cursor-color...done
Loading unkillable-scratch...
Loading unkillable-scratch...done
Loading /home/lk/.emacs.d/company-statistics-cache.el (source)...
Loading /home/lk/.emacs.d/company-statistics-cache.el (source)...done
Loading completions from file /home/lk/.emacs.d/completions . . .
Loading completions from file /home/lk/.emacs.d/completions . . . Done.

Thread 1 "emacs" hit Breakpoint 4, init_fringe_bitmap (which=which@entry=26,
fb=fb@entry=0x188f070, once_p=once_p@entry=0) at fringe.c:1487
1487          if (which >= max_used_fringe_bitmap)


>>>> init_fringe_bitmap(): end of function, !once_p <<<<





fringe.c:1487
rif unavailable (which: 26)

Stack level 0, frame at 0x7fffffff9da0:
 rip = 0x5d6846 in init_fringe_bitmap (fringe.c:1487); saved rip = 0x5d7239
 called by frame at 0x7fffffff9e20
 source language c.
 Arglist at 0x7fffffff9d78, args: which=which@entry=26, fb=fb@entry=0x188f070,
once_p=once_p@entry=0
 Locals at 0x7fffffff9d78, Previous frame's sp is 0x7fffffff9da0
 Saved registers:
  rbx at 0x7fffffff9d80, rbp at 0x7fffffff9d88, r12 at 0x7fffffff9d90, rip
at 0x7fffffff9d98
rif = 0x0
#0  0x00000000005d6846 in init_fringe_bitmap (which=which@entry=26,
fb=fb@entry=0x188f070, once_p=once_p@entry=0) at fringe.c:1487
#1  0x00000000005d7239 in Fdefine_fringe_bitmap (bitmap=XIL(0x9c9aa0),
bits=XIL(0x31879d5), height=<optimized out>, width=<optimized out>,
align=<optimized out>) at fringe.c:1624
#2  0x000000000056665a in funcall_subr (subr=0x9bc040
<Sdefine_fringe_bitmap>, numargs=numargs@entry=2,
args=args@entry=0x7fffffff9ed0)
at eval.c:2888
#3  0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffff9ec8)
at lisp.h:2076
#4  0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(20),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#5  0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#6  0x000000000056741d in eval_sub (form=form@entry=XIL(0x15dd043)) at
lisp.h:2076
#7  0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffa420, sourcename=XIL(0x124f9e4),
sourcename@entry=XIL(0x15f55d4), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#8  0x000000000058ad64 in Fload (file=file@entry=XIL(0x7ffff18e01e4),
noerror=noerror@entry=XIL(0x30), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#9  0x000000000058aebf in save_match_data_load
(file=file@entry=XIL(0x7ffff18e01e4),
noerror=noerror@entry=XIL(0x30), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#10 0x00000000005729a4 in Frequire (feature=XIL(0x7ffff0eb6490),
filename=<optimized out>, noerror=XIL(0x30)) at lisp.h:1366
#11 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffa628) at eval.c:2881
#12 0x0000000000565359 in Ffuncall (nargs=nargs@entry=4,
args=args@entry=0x7fffffffa620)
at lisp.h:2076
#13 0x0000000000565797 in Fapply (nargs=2, args=0x7fffffffa798) at
eval.c:2425
#14 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffa798) at eval.c:2856
#15 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffa790)
at lisp.h:2076
#16 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffa990) at bytecode.c:633
#17 0x00000000005677f0 in funcall_lambda (fun=XIL(0x1828605),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffa990) at
lisp.h:1819
#18 0x0000000000565369 in Ffuncall (nargs=4, args=args@entry=0x7fffffffa988)
at eval.c:2805
#19 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#20 0x00000000005679bb in funcall_lambda (fun=XIL(0xcfceb5),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffabf0) at
lisp.h:1819
#21 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffabe8)
at eval.c:2805
#22 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#23 0x00000000005679bb in funcall_lambda (fun=XIL(0xcfcf35),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffae10) at
lisp.h:1819
#24 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffae08)
at eval.c:2805
#25 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(6),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#26 0x00000000005679bb in funcall_lambda (fun=XIL(0xcfd075),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffb0b0) at
lisp.h:1819
#27 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffb0a8)
at eval.c:2805
#28 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(2),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#29 0x00000000005679bb in funcall_lambda (fun=XIL(0xcfd7e5),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffb2d0) at
lisp.h:1819
#30 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffb2c8)
at eval.c:2805
#31 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(3),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#32 0x00000000005679bb in funcall_lambda (fun=XIL(0x2868735),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffb570) at
lisp.h:1819
#33 0x0000000000565369 in Ffuncall (nargs=1, args=0x7fffffffb568) at
eval.c:2805
#34 0x0000000000565429 in funcall_nil (nargs=<optimized out>,
args=<optimized out>) at eval.c:2436
#35 0x0000000000564bd6 in run_hook_with_args (nargs=nargs@entry=1,
args=args@entry=0x7fffffffb568, funcall=funcall@entry=0x565420
<funcall_nil>) at eval.c:2613
#36 0x0000000000564c48 in Frun_hook_with_args (nargs=nargs@entry=1,
args=args@entry=0x7fffffffb568) at eval.c:2478
#37 0x0000000000564c65 in run_hook (hook=<optimized out>) at eval.c:2626
#38 0x0000000000564c87 in Frun_hooks (nargs=1, args=0x7fffffffb658) at
eval.c:2460
#39 0x00000000005665a7 in funcall_subr (subr=0x9b5e00 <Srun_hooks>,
numargs=numargs@entry=1, args=args@entry=0x7fffffffb658) at eval.c:2856
#40 0x0000000000565359 in Ffuncall (nargs=2, args=args@entry=0x7fffffffb650)
at lisp.h:2076
#41 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffb8d0) at bytecode.c:633
#42 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16de665),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffb8d0) at
lisp.h:1819
#43 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffb8c8)
at eval.c:2805
#44 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffbb68) at bytecode.c:633
#45 0x00000000005677f0 in funcall_lambda (fun=XIL(0xc95385),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffbb68) at
lisp.h:1819
#46 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffbb60)
at eval.c:2805
#47 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(8),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffbe28) at bytecode.c:633
#48 0x00000000005677f0 in funcall_lambda (fun=XIL(0xca0395),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffbe28) at
lisp.h:1819
#49 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffbe20)
at eval.c:2805
#50 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(17),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffc1b0) at bytecode.c:633
#51 0x00000000005677f0 in funcall_lambda (fun=XIL(0xc92c55),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc1b0) at
lisp.h:1819
#52 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffc1a8)
at eval.c:2805
#53 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(18),
args_template=args_template@entry=make_fixnum(513), nargs=nargs@entry=2,
args=<optimized out>, args@entry=0x7fffffffc5f0) at bytecode.c:633
#54 0x00000000005677f0 in funcall_lambda (fun=XIL(0xc94645),
nargs=nargs@entry=2, arg_vector=arg_vector@entry=0x7fffffffc5f0) at
lisp.h:1819
#55 0x0000000000565369 in Ffuncall (nargs=3, args=args@entry=0x7fffffffc5e8)
at eval.c:2805
#56 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(3),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#57 0x00000000005679bb in funcall_lambda (fun=XIL(0x13525f5),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc7d8) at
lisp.h:1819
#58 0x0000000000565369 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffffc7d0)
at eval.c:2805
#59 0x00000000005654c7 in call1 (fn=fn@entry=XIL(0x13525f5),
arg1=<optimized out>) at eval.c:2656
#60 0x000000000056cc0a in mapcar1 (leni=5, vals=vals@entry=0x0,
fn=fn@entry=XIL(0x13525f5),
seq=seq@entry=XIL(0x14dfb23)) at lisp.h:1410
#61 0x000000000056f620 in Fmapc (function=XIL(0x13525f5),
sequence=XIL(0x14dfb23)) at fns.c:2748
#62 0x0000000000566618 in funcall_subr (subr=0x9b75c0 <Smapc>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffc930) at eval.c:2878
#63 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffc928)
at lisp.h:2076
#64 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(6),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#65 0x00000000005679bb in funcall_lambda (fun=fun@entry=XIL(0x1352665),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffcb20) at
lisp.h:1819
#66 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x1352665),
args=<optimized out>, count=count@entry=22) at eval.c:2935
#67 0x00000000005674fa in eval_sub (form=form@entry=XIL(0x14dfc93)) at
eval.c:2319
#68 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffcdc0, sourcename=XIL(0x13e5944),
sourcename@entry=XIL(0x13e1c94), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#69 0x000000000058ad64 in Fload (file=XIL(0x13e1b14), noerror=<optimized
out>, nomessage=XIL(0x7ffff0cfdea0), nosuffix=<optimized out>,
must_suffix=<optimized out>) at lisp.h:1024
#70 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=3, args=args@entry=0x7fffffffcf90) at eval.c:2888
#71 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffcf88)
at lisp.h:2076
#72 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(18),
args_template=args_template@entry=make_fixnum(769), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffd2c0) at bytecode.c:633
#73 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1ade005),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffd2c0) at
lisp.h:1819
#74 0x0000000000565369 in Ffuncall (nargs=4, args=args@entry=0x7fffffffd2b8)
at eval.c:2805
#75 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdb18) at bytecode.c:633
#76 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1adb10d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdb18) at
lisp.h:1819
#77 0x0000000000565369 in Ffuncall (nargs=1, args=args@entry=0x7fffffffdb10)
at eval.c:2805
#78 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffdec0) at bytecode.c:633
#79 0x00000000005677f0 in funcall_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffdec0) at
lisp.h:1819
#80 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x7ffff1adf16d),
args=<optimized out>, count=count@entry=4) at eval.c:2935
#81 0x00000000005674fa in eval_sub (form=form@entry=XIL(0x7ffff1c3663b)) at
eval.c:2319
#82 0x0000000000568a57 in Feval (form=XIL(0x7ffff1c3663b),
lexical=lexical@entry=XIL(0)) at eval.c:2103
#83 0x00000000004ed85c in top_level_2 () at lisp.h:1024
#84 0x000000000056478e in internal_condition_case (bfun=bfun@entry=0x4ed847
<top_level_2>, handlers=handlers@entry=XIL(0x90), hfun=hfun@entry=0x4f1bfd
<cmd_error>) at eval.c:1355
#85 0x00000000004ed81b in top_level_1 (ignore=ignore@entry=XIL(0)) at
lisp.h:1024
#86 0x0000000000564705 in internal_catch (tag=tag@entry=XIL(0xd2f0),
func=func@entry=0x4ed7f9 <top_level_1>, arg=arg@entry=XIL(0)) at eval.c:1116
#87 0x00000000004ed7a5 in command_loop () at lisp.h:1024
#88 0x00000000004f1899 in recursive_edit_1 () at keyboard.c:714
#89 0x00000000004f1b4d in Frecursive_edit () at keyboard.c:786
#90 0x00000000004ecf9e in main (argc=2, argv=<optimized out>) at
emacs.c:2086

Lisp Backtrace:
  "define-fringe-bitmap" (0xffff9ed0)
  "byte-code" (0xffffa230)
0x9b7440 PVEC_SUBR
  "apply" (0xffffa798)
  "require" (0xffffa990)
  "ac-syntax-checker-workaround" (0xffffabf0)
  "ac-setup" (0xffffae10)
  "auto-complete-mode" (0xffffb0b0)
  "auto-complete-mode-maybe" (0xffffb2d0)
  "global-auto-complete-mode-enable-in-buffers" (0xffffb570)
  "run-hooks" (0xffffb658)
  "run-mode-hooks" (0xffffb8d0)
  "emacs-lisp-compilation-mode" (0xffffbb68)
  "byte-compile-log-file" (0xffffbe28)
  "byte-compile-from-buffer" (0xffffc1b0)
  "byte-compile-file" (0xffffc5f0)
0x13525f0 PVEC_COMPILED
  "mapc" (0xffffc930)
  "compile-and-load-directory" (0xffffcb20)
  "load" (0xffffcf90)
  "startup--load-user-init-file" (0xffffd2c0)
  "command-line" (0xffffdb18)
  "normal-top-level" (0xffffdec0)


Wrote /home/lk/.emacs.d/lk-loadfiles/let*-while-cond.elc
Loading /home/lk/.emacs.d/lk-loadfiles/let*-while-cond.elc...
Loading /home/lk/.emacs.d/lk-loadfiles/let*-while-cond.elc...done
Wrote /home/lk/.emacs.d/lk-loadfiles/lk-windowsize.elc
Loading /home/lk/.emacs.d/lk-loadfiles/lk-windowsize.elc...
Loading /home/lk/.emacs.d/lk-loadfiles/lk-windowsize.elc...done
Wrote /home/lk/.emacs.d/lk-loadfiles/partial-fn.elc
Loading /home/lk/.emacs.d/lk-loadfiles/partial-fn.elc...
Loading /home/lk/.emacs.d/lk-loadfiles/partial-fn.elc...done
Wrote /home/lk/.emacs.d/lk-loadfiles/regexp-kill-buffers-named.elc
Loading /home/lk/.emacs.d/lk-loadfiles/regexp-kill-buffers-named.elc...
Loading /home/lk/.emacs.d/lk-loadfiles/regexp-kill-buffers-named.elc...done
Wrote /home/lk/.emacs.d/lk-loadfiles/reload-file-in-buffer.elc
Loading /home/lk/.emacs.d/lk-loadfiles/reload-file-in-buffer.elc...
Loading /home/lk/.emacs.d/lk-loadfiles/reload-file-in-buffer.elc...done
Starting Emacs daemon.
Package cl is deprecated
[New Thread 0x7fffebfff700 (LWP 14487)]
[New Thread 0x7fffeb7fe700 (LWP 14488)]
[Detaching after vfork from child process 14489]

Thread 1 "emacs" hit Breakpoint 4, init_fringe_bitmap (which=which@entry=27,
fb=fb@entry=0x2848770, once_p=once_p@entry=0) at fringe.c:1487
1487          if (which >= max_used_fringe_bitmap)


>>>> init_fringe_bitmap(): end of function, !once_p <<<<



$1 =   "rif: exists (once for reference)\n\n"
Stack level 0, frame at 0x7fffffffa620:
 rip = 0x5d6846 in init_fringe_bitmap (fringe.c:1487); saved rip = 0x5d7239
 called by frame at 0x7fffffffa6a0
 source language c.
 Arglist at 0x7fffffffa5f8, args: which=which@entry=27, fb=fb@entry=0x2848770,
once_p=once_p@entry=0
 Locals at 0x7fffffffa5f8, Previous frame's sp is 0x7fffffffa620
 Saved registers:
  rbx at 0x7fffffffa600, rbp at 0x7fffffffa608, r12 at 0x7fffffffa610, rip
at 0x7fffffffa618
rif = 0x677500 <x_redisplay_interface>
#0  0x00000000005d6846 in init_fringe_bitmap (which=which@entry=27,
fb=fb@entry=0x2848770, once_p=once_p@entry=0) at fringe.c:1487
#1  0x00000000005d7239 in Fdefine_fringe_bitmap (bitmap=XIL(0xadfd60),
bits=XIL(0x1aef7d5), height=<optimized out>, width=<optimized out>,
align=<optimized out>) at fringe.c:1624
#2  0x000000000056665a in funcall_subr (subr=0x9bc040
<Sdefine_fringe_bitmap>, numargs=numargs@entry=5,
args=args@entry=0x7fffffffa750)
at eval.c:2888
#3  0x0000000000565359 in Ffuncall (nargs=6, args=args@entry=0x7fffffffa748)
at lisp.h:2076
#4  0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(6),
args_template=args_template@entry=XIL(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x0) at bytecode.c:633
#5  0x000000000059f679 in Fbyte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=<optimized out>) at lisp.h:1024
#6  0x000000000056741d in eval_sub (form=form@entry=XIL(0x10bf2e3)) at
lisp.h:2076
#7  0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffab00, sourcename=XIL(0x24893c4),
sourcename@entry=XIL(0x272d1c4), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#8  0x000000000058ad64 in Fload (file=file@entry=XIL(0x7ffff16fc0f4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=<optimized out>,
must_suffix@entry=XIL(0x30)) at lisp.h:1024
#9  0x000000000058aebf in save_match_data_load
(file=file@entry=XIL(0x7ffff16fc0f4),
noerror=noerror@entry=XIL(0), nomessage=nomessage@entry=XIL(0x30),
nosuffix=nosuffix@entry=XIL(0), must_suffix=must_suffix@entry=XIL(0x30)) at
lread.c:1522
#10 0x00000000005729a4 in Frequire (feature=XIL(0x7ffff0cd2350),
filename=<optimized out>, noerror=XIL(0)) at lisp.h:1366
#11 0x0000000000566628 in funcall_subr (subr=0x9b7440 <Srequire>,
numargs=numargs@entry=1, args=args@entry=0x7fffffffae40) at eval.c:2881
#12 0x0000000000565359 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffffae38)
at lisp.h:2076
#13 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffffae38) at
eval.c:2382
#14 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffae38) at eval.c:2856
#15 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffae30)
at lisp.h:2076
#16 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffb000) at bytecode.c:633
#17 0x00000000005677f0 in funcall_lambda (fun=fun@entry=XIL(0x1828605),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffb000) at
lisp.h:1819
#18 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x1828605),
args=<optimized out>, count=count@entry=40) at eval.c:2935
#19 0x00000000005674fa in eval_sub (form=form@entry=XIL(0xef39a3)) at
eval.c:2319
#20 0x000000000058a3a6 in readevalloop
(readcharfun=readcharfun@entry=XIL(0x6f90),
infile0=infile0@entry=0x7fffffffb2a0, sourcename=XIL(0x1ade1b4),
sourcename@entry=XIL(0x1a2da44), printflag=printflag@entry=false,
unibyte=unibyte@entry=XIL(0), readfun=readfun@entry=XIL(0), start=XIL(0),
end=XIL(0)) at lread.c:2100
#21 0x000000000058ad64 in Fload (file=XIL(0x7ffff174b00c),
noerror=<optimized out>, nomessage=XIL(0x30), nosuffix=<optimized out>,
must_suffix=<optimized out>) at lisp.h:1024
#22 0x000000000056665a in funcall_subr (subr=0x9b8e00 <Sload>,
numargs=numargs@entry=5, args=args@entry=0x7fffffffb428) at eval.c:2888
#23 0x0000000000565359 in Ffuncall (nargs=nargs@entry=6,
args=args@entry=0x7fffffffb420)
at lisp.h:2076
#24 0x0000000000565797 in Fapply (nargs=2, args=0x7fffffffb598) at
eval.c:2425
#25 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffb598) at eval.c:2856
#26 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffb590)
at lisp.h:2076
#27 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(4),
args_template=args_template@entry=make_fixnum(128), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffb760) at bytecode.c:633
#28 0x00000000005677f0 in funcall_lambda (fun=fun@entry=XIL(0x18282e5),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffb760) at
lisp.h:1819
#29 0x0000000000566e49 in apply_lambda (fun=fun@entry=XIL(0x18282e5),
args=<optimized out>, count=count@entry=25) at eval.c:2935
#30 0x00000000005674fa in eval_sub (form=<optimized out>) at eval.c:2319
#31 0x00000000005676ae in Fprogn (body=XIL(0x7ffff18d8afb)) at eval.c:462
#32 0x00000000005671ba in eval_sub (form=<optimized out>) at lisp.h:2076
#33 0x0000000000567a61 in Fif (args=XIL(0x7ffff18d8abb)) at lisp.h:1416
#34 0x00000000005671ba in eval_sub (form=<optimized out>) at lisp.h:2076
#35 0x00000000005676ae in Fprogn (body=XIL(0)) at eval.c:462
#36 0x0000000000567a1e in funcall_lambda (fun=XIL(0x7ffff18d8a6b),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffbc58) at
lisp.h:1416
#37 0x00000000005653a0 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffffbc50)
at eval.c:2817
#38 0x00000000005656c2 in Fapply (nargs=2, args=0x7fffffffbc50) at
eval.c:2382
#39 0x00000000005665a7 in funcall_subr (subr=0x9b5e40 <Sapply>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffbc50) at eval.c:2856
#40 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffbc48)
at lisp.h:2076
#41 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(12),
args_template=args_template@entry=make_fixnum(642), nargs=nargs@entry=3,
args=<optimized out>, args@entry=0x7fffffffbed8) at bytecode.c:633
#42 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16cabf5),
nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffbed8) at
lisp.h:1819
#43 0x0000000000565369 in Ffuncall (nargs=4, args=args@entry=0x7fffffffbed0)
at eval.c:2805
#44 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffc0d8) at bytecode.c:633
#45 0x00000000005677f0 in funcall_lambda (fun=XIL(0x3879665),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc0d8) at
lisp.h:1819
#46 0x0000000000565369 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffffc0d0)
at eval.c:2805
#47 0x00000000005654c7 in call1 (fn=fn@entry=XIL(0x3879665),
arg1=<optimized out>) at eval.c:2656
#48 0x000000000056cc0a in mapcar1 (leni=9, vals=vals@entry=0x0,
fn=fn@entry=XIL(0x3879665),
seq=seq@entry=XIL(0x7ffff16cb45b)) at lisp.h:1410
#49 0x000000000056f620 in Fmapc (function=XIL(0x3879665),
sequence=XIL(0x7ffff16cb45b)) at fns.c:2748
#50 0x0000000000566618 in funcall_subr (subr=0x9b75c0 <Smapc>,
numargs=numargs@entry=2, args=args@entry=0x7fffffffc248) at eval.c:2878
#51 0x0000000000565359 in Ffuncall (nargs=3, args=args@entry=0x7fffffffc240)
at lisp.h:2076
#52 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(10),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffc4e0) at bytecode.c:633
#53 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16ca895),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc4e0) at
lisp.h:1819
#54 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffc4d8)
at eval.c:2805
#55 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(5),
args_template=args_template@entry=make_fixnum(257), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffc718) at bytecode.c:633
#56 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff16ca805),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc718) at
lisp.h:1819
#57 0x0000000000565369 in Ffuncall (nargs=2, args=args@entry=0x7fffffffc710)
at eval.c:2805
#58 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(7),
args_template=args_template@entry=make_fixnum(0), nargs=nargs@entry=0,
args=<optimized out>, args@entry=0x7fffffffca50) at bytecode.c:633
#59 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff1740d8d),
nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffca50) at
lisp.h:1819
#60 0x0000000000565369 in Ffuncall (nargs=1, args=0x7fffffffca48) at
eval.c:2805
#61 0x0000000000565429 in funcall_nil (nargs=<optimized out>,
args=<optimized out>) at eval.c:2436
#62 0x0000000000564bd6 in run_hook_with_args (nargs=nargs@entry=1,
args=args@entry=0x7fffffffca48, funcall=funcall@entry=0x565420
<funcall_nil>) at eval.c:2613
#63 0x0000000000564c48 in Frun_hook_with_args (nargs=nargs@entry=1,
args=args@entry=0x7fffffffca48) at eval.c:2478
#64 0x0000000000564c65 in run_hook (hook=<optimized out>) at eval.c:2626
#65 0x0000000000564c87 in Frun_hooks (nargs=1, args=0x7fffffffcb58) at
eval.c:2460
#66 0x00000000005665a7 in funcall_subr (subr=0x9b5e00 <Srun_hooks>,
numargs=numargs@entry=1, args=args@entry=0x7fffffffcb58) at eval.c:2856
#67 0x0000000000565359 in Ffuncall (nargs=2, args=args@entry=0x7fffffffcb50)
at lisp.h:2076
#68 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(10),
args_template=args_template@entry=make_fixnum(1280), nargs=nargs@entry=2,
args=<optimized out>, args@entry=0x7fffffffcee8) at bytecode.c:633
#69 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff179114d),
nargs=nargs@entry=2, arg_vector=arg_vector@entry=0x7fffffffcee8) at
lisp.h:1819
#70 0x0000000000565369 in Ffuncall (nargs=3, args=args@entry=0x7fffffffcee0)
at eval.c:2805
#71 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(11),
args_template=args_template@entry=make_fixnum(1542), nargs=nargs@entry=6,
args=<optimized out>, args@entry=0x7fffffffd218) at bytecode.c:633
#72 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff17909b5),
nargs=nargs@entry=6, arg_vector=arg_vector@entry=0x7fffffffd218) at
lisp.h:1819
#73 0x0000000000565369 in Ffuncall (nargs=7, args=args@entry=0x7fffffffd210)
at eval.c:2805
#74 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(17),
args_template=args_template@entry=make_fixnum(1025), nargs=nargs@entry=4,
args=<optimized out>, args@entry=0x7fffffffd6e0) at bytecode.c:633
#75 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff17410cd),
nargs=nargs@entry=4, arg_vector=arg_vector@entry=0x7fffffffd6e0) at
lisp.h:1819
#76 0x0000000000565369 in Ffuncall (nargs=5, args=args@entry=0x7fffffffd6d8)
at eval.c:2805
#77 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(7),
args_template=args_template@entry=make_fixnum(513), nargs=nargs@entry=2,
args=<optimized out>, args@entry=0x7fffffffd9d0) at bytecode.c:633
#78 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff17a7f25),
nargs=nargs@entry=2, arg_vector=arg_vector@entry=0x7fffffffd9d0) at
lisp.h:1819
#79 0x0000000000565369 in Ffuncall (nargs=nargs@entry=3,
args=args@entry=0x7fffffffd9c8)
at eval.c:2805
#80 0x0000000000561e74 in Ffuncall_interactively (nargs=3,
args=0x7fffffffd9c8) at callint.c:255
#81 0x00000000005665a7 in funcall_subr (subr=0x9b59c0
<Sfuncall_interactively>, numargs=numargs@entry=3,
args=args@entry=0x7fffffffd9c8)
at eval.c:2856
#82 0x0000000000565359 in Ffuncall (nargs=nargs@entry=4,
args=args@entry=0x7fffffffd9c0)
at lisp.h:2076
#83 0x0000000000565797 in Fapply (nargs=nargs@entry=3,
args=args@entry=0x7fffffffdb00)
at eval.c:2425
#84 0x0000000000562485 in Fcall_interactively
(function=XIL(0x7ffff0d7df08), record_flag=XIL(0),
keys=XIL(0x7ffff1c36745)) at lisp.h:1024
#85 0x0000000000566628 in funcall_subr (subr=0x9b5980
<Scall_interactively>, numargs=numargs@entry=3, args=args@entry=0x7fffffffdc40)
at eval.c:2881
#86 0x0000000000565359 in Ffuncall (nargs=4, args=args@entry=0x7fffffffdc38)
at lisp.h:2076
#87 0x000000000059d57e in exec_byte_code (bytestr=<optimized out>,
vector=<optimized out>, maxdepth=make_fixnum(13),
args_template=args_template@entry=make_fixnum(1025), nargs=nargs@entry=1,
args=<optimized out>, args@entry=0x7fffffffdee8) at bytecode.c:633
#88 0x00000000005677f0 in funcall_lambda (fun=XIL(0x7ffff17e2195),
nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffdee8) at
lisp.h:1819
#89 0x0000000000565369 in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7fffffffdee0)
at eval.c:2805
#90 0x00000000005654c7 in call1 (fn=fn@entry=XIL(0x42c0), arg1=<optimized
out>) at eval.c:2656
#91 0x00000000004faf93 in command_loop_1 () at lisp.h:1024
#92 0x000000000056478e in internal_condition_case (bfun=bfun@entry=0x4fab7a
<command_loop_1>, handlers=handlers@entry=XIL(0x90), hfun=hfun@entry=0x4f1bfd
<cmd_error>) at eval.c:1355
#93 0x00000000004ed7ef in command_loop_2 (ignore=ignore@entry=XIL(0)) at
lisp.h:1024
#94 0x0000000000564705 in internal_catch (tag=tag@entry=XIL(0xd2f0),
func=func@entry=0x4ed7d7 <command_loop_2>, arg=arg@entry=XIL(0)) at
eval.c:1116
#95 0x00000000004ed7b9 in command_loop () at lisp.h:1024
#96 0x00000000004f1899 in recursive_edit_1 () at keyboard.c:714
#97 0x00000000004f1b4d in Frecursive_edit () at keyboard.c:786
#98 0x00000000004ecf9e in main (argc=2, argv=<optimized out>) at
emacs.c:2086

Lisp Backtrace:
  "define-fringe-bitmap" (0xffffa750)
  "byte-code" (0xffffa910)
0x9b7440 PVEC_SUBR
  "apply" (0xffffae38)
  "require" (0xffffb000)
0x9b8e00 PVEC_SUBR
  "apply" (0xffffb598)
  "load" (0xffffb760)
  "progn" (0xffffb8f8)
  "if" (0xffffb9c8)
  "vc-git-registered" (0xffffbc58)
  "apply" (0xffffbc50)
  "vc-call-backend" (0xffffbed8)
0x3879660 PVEC_COMPILED
  "mapc" (0xffffc248)
  "vc-registered" (0xffffc4e0)
  "vc-backend" (0xffffc718)
  "vc-refresh-state" (0xffffca50)
  "run-hooks" (0xffffcb58)
  "after-find-file" (0xffffcee8)
  "find-file-noselect-1" (0xffffd218)
  "find-file-noselect" (0xffffd6e0)
  "find-file" (0xffffd9d0)
  "funcall-interactively" (0xffffd9c8)
  "call-interactively" (0xffffdc40)
  "command-execute" (0xffffdee8)


On Mon, Aug 12, 2019, 12:59 Eli Zaretskii, <eliz@gnu.org> wrote:

> > From: Liam Quinlan <liamkquinlan@gmail.com>
> > Date: Mon, 12 Aug 2019 06:48:25 -0400
> > Cc: emacs-devel@gnu.org
> >
> > ... Whoops, I guess gdb doesn't log !cmd output.  Here's what should be
> in that awkward empty spot.
>
> Thanks.  This and the GDB session adds some important info, but
> there's still a gap in my understanding of the problem.  To close that
> gap, please show the C and Lisp backtrace from the breakpoint at
> fringe.c:1487 which prints "rif: unavailable".  That will allow me to
> understand which Lisp code tried to define fringe bitmaps when no GUI
> frame is available.
>

[-- Attachment #2: Type: text/html, Size: 79433 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-12 16:59     ` Eli Zaretskii
  2019-08-12 20:00       ` Liam Quinlan
@ 2019-08-13  2:52       ` Liam Quinlan
  2019-08-13 15:00         ` Eli Zaretskii
  1 sibling, 1 reply; 11+ messages in thread
From: Liam Quinlan @ 2019-08-13  2:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2324 bytes --]

Update: i think I've found the actual proper solution.  Alternative patch
on offer below; this time by checking for dynamic bitmaps already in place
after finishing the static ones in x_cr_init_fringe.  Note that that
function also defines w32_init_fringe if HAVE_NTGUI, so windows is covered.

Trying to be minimal so this example doesn't iterate to over fringe_bitmaps
looking for sparse elements, just begin checking fringe_bitmaps for
existing elements at the index following the standard bitmaps leaves off
and continue until the first null.  I'm not sure if it's too bold to trust
that holes haven't had a chance to arise though. (perhaps if the server is
initially used in console mode and packages get unloaded before a gui
client connects...?).



diff --git a/.gitignore b/.gitignore
index e75df8b8b6..8711a2759b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -290,3 +290,4 @@ nt/emacs.rc
 nt/emacsclient.rc
 src/gdb.ini
 /var/
+build/
diff --git a/src/fringe.c b/src/fringe.c
index d0d599223d..82f2ad5d55 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1774,16 +1774,19 @@ w32_init_fringe (struct redisplay_interface *rif)
 x_cr_init_fringe (struct redisplay_interface *rif)
 #endif
 {
-  int bt;
-
   if (!rif)
     return;

+  int bt;
+  struct fringe_bitmap *fb;
+
   for (bt = NO_FRINGE_BITMAP + 1; bt < MAX_STANDARD_FRINGE_BITMAPS; bt++)
     {
-      struct fringe_bitmap *fb = &standard_bitmaps[bt];
+      fb = &standard_bitmaps[bt];
       rif->define_fringe_bitmap (bt, fb->bits, fb->height, fb->width);
     }
+  while ((fb = fringe_bitmaps[bt]))
+      rif->define_fringe_bitmap (bt++, fb->bits, fb->height, fb->width);
 }
 #endif


On Mon, Aug 12, 2019, 12:59 Eli Zaretskii, <eliz@gnu.org> wrote:

> > From: Liam Quinlan <liamkquinlan@gmail.com>
> > Date: Mon, 12 Aug 2019 06:48:25 -0400
> > Cc: emacs-devel@gnu.org
> >
> > ... Whoops, I guess gdb doesn't log !cmd output.  Here's what should be
> in that awkward empty spot.
>
> Thanks.  This and the GDB session adds some important info, but
> there's still a gap in my understanding of the problem.  To close that
> gap, please show the C and Lisp backtrace from the breakpoint at
> fringe.c:1487 which prints "rif: unavailable".  That will allow me to
> understand which Lisp code tried to define fringe bitmaps when no GUI
> frame is available.
>

[-- Attachment #2: Type: text/html, Size: 3811 bytes --]

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-13  2:52       ` Liam Quinlan
@ 2019-08-13 15:00         ` Eli Zaretskii
  2019-08-13 17:36           ` Liam Quinlan
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2019-08-13 15:00 UTC (permalink / raw)
  To: Liam Quinlan; +Cc: emacs-devel

> From: Liam Quinlan <liamkquinlan@gmail.com>
> Date: Mon, 12 Aug 2019 22:52:31 -0400
> Cc: emacs-devel@gnu.org
> 
> Update: i think I've found the actual proper solution.  Alternative patch on offer below; this time by checking for
> dynamic bitmaps already in place after finishing the static ones in x_cr_init_fringe.  Note that that function also
> defines w32_init_fringe if HAVE_NTGUI, so windows is covered.

Yes, the idea is correct, but the implementation needed some tweaking,
in particular due to w32 doing things a bit differently during
startup.  See commit c90975f on the master branch.

> Trying to be minimal so this example doesn't iterate to over fringe_bitmaps looking for sparse elements, just
> begin checking fringe_bitmaps for existing elements at the index following the standard bitmaps leaves off and
> continue until the first null.  I'm not sure if it's too bold to trust that holes haven't had a chance to arise though.
> (perhaps if the server is initially used in console mode and packages get unloaded before a gui client
> connects...?).

No, we cannot assume there are no holes, you can clearly see in
destroy_fringe_bitmap that it leaves holes if the destroyed bitmap is
not the last one in the array.  So we need to initialize all the
user-defined bitmaps whose pointer is not NULL.

Btw, there's a simple way of reproducing the problem without any init
files and extra packages:

  emacs -Q -daemon
  emacsclient SOME-VERSIONED-FILE-UNDER-GIT
  M-x set variable RET diff-font-lock-prettify RET t RET
  [modify the file and then save it]
  C-x v =

Before the change I pushed the above would fail to display the vc-diff
bitmaps on the fringe (I presume the Cairo build will crash).  After
the change, the bitmaps are displayed correctly.  This happens because
diff-mode is loaded before the GUI frame is created, and thus the
fringe bitmaps defined by diff-mode during loading are not completely
initialized.

Thanks.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: --with-cairo Emacs server crash and fix
  2019-08-13 15:00         ` Eli Zaretskii
@ 2019-08-13 17:36           ` Liam Quinlan
  0 siblings, 0 replies; 11+ messages in thread
From: Liam Quinlan @ 2019-08-13 17:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2200 bytes --]

Alright cool.  I'll have a look at your changes for comparison.  Thanks for
the explanation.

On Tue, Aug 13, 2019, 11:00 Eli Zaretskii, <eliz@gnu.org> wrote:

> > From: Liam Quinlan <liamkquinlan@gmail.com>
> > Date: Mon, 12 Aug 2019 22:52:31 -0400
> > Cc: emacs-devel@gnu.org
> >
> > Update: i think I've found the actual proper solution.  Alternative
> patch on offer below; this time by checking for
> > dynamic bitmaps already in place after finishing the static ones in
> x_cr_init_fringe.  Note that that function also
> > defines w32_init_fringe if HAVE_NTGUI, so windows is covered.
>
> Yes, the idea is correct, but the implementation needed some tweaking,
> in particular due to w32 doing things a bit differently during
> startup.  See commit c90975f on the master branch.
>
> > Trying to be minimal so this example doesn't iterate to over
> fringe_bitmaps looking for sparse elements, just
> > begin checking fringe_bitmaps for existing elements at the index
> following the standard bitmaps leaves off and
> > continue until the first null.  I'm not sure if it's too bold to trust
> that holes haven't had a chance to arise though.
> > (perhaps if the server is initially used in console mode and packages
> get unloaded before a gui client
> > connects...?).
>
> No, we cannot assume there are no holes, you can clearly see in
> destroy_fringe_bitmap that it leaves holes if the destroyed bitmap is
> not the last one in the array.  So we need to initialize all the
> user-defined bitmaps whose pointer is not NULL.
>
> Btw, there's a simple way of reproducing the problem without any init
> files and extra packages:
>
>   emacs -Q -daemon
>   emacsclient SOME-VERSIONED-FILE-UNDER-GIT
>   M-x set variable RET diff-font-lock-prettify RET t RET
>   [modify the file and then save it]
>   C-x v =
>
> Before the change I pushed the above would fail to display the vc-diff
> bitmaps on the fringe (I presume the Cairo build will crash).  After
> the change, the bitmaps are displayed correctly.  This happens because
> diff-mode is loaded before the GUI frame is created, and thus the
> fringe bitmaps defined by diff-mode during loading are not completely
> initialized.
>
> Thanks.
>

[-- Attachment #2: Type: text/html, Size: 2803 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-08-13 17:36 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-09 15:40 --with-cairo Emacs server crash and fix Liam Quinlan
2019-08-10  9:39 ` Eli Zaretskii
2019-08-12 10:42   ` Liam Quinlan
2019-08-12 10:48   ` Liam Quinlan
2019-08-12 16:59     ` Eli Zaretskii
2019-08-12 20:00       ` Liam Quinlan
2019-08-13  2:52       ` Liam Quinlan
2019-08-13 15:00         ` Eli Zaretskii
2019-08-13 17:36           ` Liam Quinlan
  -- strict thread matches above, loose matches on Subject: below --
2019-08-08  7:01 Liam Quinlan
2019-08-09  7:11 ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).