From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Liam Quinlan Newsgroups: gmane.emacs.devel Subject: Re: --with-cairo Emacs server crash and fix Date: Mon, 12 Aug 2019 06:48:25 -0400 Message-ID: References: <83pnld8imb.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000002d082f058fe94413" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="210542"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Aug 12 12:49:13 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hx7t2-000seQ-L0 for ged-emacs-devel@m.gmane.org; Mon, 12 Aug 2019 12:49:12 +0200 Original-Received: from localhost ([::1]:44286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hx7sy-0002ct-Fq for ged-emacs-devel@m.gmane.org; Mon, 12 Aug 2019 06:49:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56323) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hx7sZ-0002bP-4u for emacs-devel@gnu.org; Mon, 12 Aug 2019 06:48:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hx7sX-0005Tx-86 for emacs-devel@gnu.org; Mon, 12 Aug 2019 06:48:43 -0400 Original-Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]:35956) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hx7sU-0005SU-MG; Mon, 12 Aug 2019 06:48:38 -0400 Original-Received: by mail-ot1-x331.google.com with SMTP id k18so24914349otr.3; Mon, 12 Aug 2019 03:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lUCycHiy7YITk3R6XoT9iJncDv8q8MQh7mOX7QIp7Dw=; b=on8txPzltuw4UfatI8WtmAVDY6+vAVKyLxET04Lm5NSDw2DLw+NlP4kcVK7GV3J1oP xyC2BQ3tCtHut7KwlMJhAbV3GVEaYfyyxfKdr0aoKsCfzt4E0SzFPgcjoz8P7Me1HLpE SM+YMorFlsswQeq1j5FA7CrN8/tsamO0jvU72sXwfzxfTqdVv5yRWWy8BFg6sbG0+gaw K+5C+DuuzyGI5zWw/rUTVUN6n9guYSedCJdgP26vMi3NNkqEkwZsLCuUCTXiBYZhvj7A DMX5hkLh13vretkdv89SavB67SGSxvPWh5gwsAfuBzgbcQz9M+rNTSvGfRBF+h2WIlrt 0QZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lUCycHiy7YITk3R6XoT9iJncDv8q8MQh7mOX7QIp7Dw=; b=lK/jALsedYKn+n/48CBLkopNUBrUeJZj+ZkjvYWgzPaF3DDwmk/Hyr8+jR8cSy2tP0 UQYTotLeDpOrPrGHUV/O2unKwkQgxTOectgSetsSu88hgjAvYZiAGk10ffjJ2anJqjjM 74wkz6B2AKmxzTJJ3SrqC7Ptj9jehIBttNTOMSgXY5GyM0DEms8qlju4CC8+kgHiJEjW ZCIfzFY8GgxKWTqn8V9jegEl9BqGnOsSxQoFXRKoS4VM24NEWeCmkvDSz7Y8WmbpNfTi EiGLdv1mrj1pr7C3nF+rJGVx/518VVOOZK6T9OiBumt7jpZUJtv20im0FjYTRB++CFKZ +aiA== X-Gm-Message-State: APjAAAWp29TERdnYJROUS/yiyGDJbXbSS4/m4YXmM5+B08o29WLtt4in qdJzXVe4QdAsQI1vivd0T3XHVP6/ag0aA7ZriujyyA== X-Google-Smtp-Source: APXvYqwMcjgqZFJtiVEmv5YRhtAXlIJlCgE6vpFMlyDadbc8KMgUqFLZ6F6tY/FHmOea6gOkaYdZM+noGi6cEPnpRLQ= X-Received: by 2002:a02:4005:: with SMTP id n5mr38127577jaa.73.1565606917505; Mon, 12 Aug 2019 03:48:37 -0700 (PDT) In-Reply-To: <83pnld8imb.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::331 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239332 Archived-At: --0000000000002d082f058fe94413 Content-Type: text/plain; charset="UTF-8" ... 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, wrote: > > From: Liam Quinlan > > 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. > --0000000000002d082f058fe94413 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
... Whoops, I guess gdb doesn't log !cmd output.=C2= =A0 Here's what should be in that awkward empty spot.
=


set print pretty on
set print a= rray on=C2=A0
set print array-indexes on
set style enabled off
set style sources = off
set pagination off
set lo= gging on

tbreak _start
commands
=C2=A0 set variable $= bitmap_counter =3D 0
=C2=A0 continue
end

break frin= ge.c:1475 if once_p
commands
= =C2=A0 set variable $bitmap_counter =3D (which > $bitmap_counter ? which= : $bitmap_counter)
=C2=A0 printf ">>>= > init_fringe_bitmap(): end of function, once_p <<<<"
=C2=A0 if fringe_bitmaps
=C2= =A0 =C2=A0 set variable $loop =3D 0
=C2=A0 =C2=A0 wh= ile $loop <=3Dq $bitmap_counter
=C2=A0 =C2=A0 =C2= =A0 printf "fringe_bitmaps[%d]: %p\n",$loop,fringe_bitmaps[$loop]=
=C2=A0 =C2=A0 =C2=A0 set variable $loop =3D $loop += 1
=C2=A0 =C2=A0 end
=C2=A0 e= lse
=C2=A0 =C2=A0 print "fringe_bitmaps =3D=3D = NULL"
=C2=A0 end
=C2=A0 = printf "\n=C2=A0 =C2=A0 which: %d\n\n",which
=C2=A0 continue
end

break fringe.c:1487=C2=A0
comm= ands
=C2=A0 set variable $bitmap_counter =3D (which = > $bitmap_counter ? which : $bitmap_counter)
=C2= =A0 printf "\n\n>>>> init_fringe_bitmap(): end of function= , !once_p <<<<\n\n"
=C2=A0 if rif
=C2=A0 =C2=A0 print "rif: exists"
=C2=A0 =C2=A0 printf "define_fringe_bitmap: %s\n",r= if->define_fringe_bitmap ? "available" : "null"
=C2=A0 else
=C2=A0 =C2=A0 print &= quot;rif: unavailable"
=C2=A0 end

=C2=A0 set variable $loop =3D 0
=
=C2=A0 while $loop <=3D $bitmap_counter
=C2=A0 =C2=A0 printf "fringe_bitmaps[%d]: %p\n",$loop,f= ringe_bitmaps[$loop]
=C2=A0 =C2=A0 set variable $loo= p =3D $loop + 1
=C2=A0 end
= =C2=A0 if fringe_bmp
=C2=A0 =C2=A0 print ""= ;
=C2=A0 =C2=A0 set variable $loop =3D 0
=C2=A0 =C2=A0 while $loop <=3D $bitmap_counter
=C2=A0 =C2=A0 =C2=A0 printf "fringe_bmp[%d]: %p\n",$loo= p,fringe_bmp[$loop]
=C2=A0 =C2=A0 =C2=A0 set variabl= e $loop =3D $loop + 1
=C2=A0 =C2=A0 end
=C2=A0 else
=C2=A0 =C2=A0 print "fri= nge_bmp =3D=3D NULL"
=C2=A0 end
=C2=A0 printf "\n=C2=A0 =C2=A0 which: %d\n\n",which
=C2=A0 continue
end

tbreak emacs.c:2086
commands
=C2=A0 printf "\n\n>>>= > main(): emacs.c <<<<\n\n"
=C2= =A0 printf "$bitmap_counter:=C2=A0 %d\n",$bitmap_counter
=C2=A0 set variable $loop =3D 0
=C2= =A0 while $loop <=3D $bitmap_counter
=C2=A0 =C2= =A0 printf "fringe_bitmaps[%d]: %p\n",$loop,fringe_bitmaps[$loop]=
=C2=A0 =C2=A0 set variable $loop =3D $loop + 1
=C2=A0 end
=C2=A0 if fringe_bmp
=C2=A0 =C2=A0 print ""
=C2=A0 =C2=A0 set variable $loop =3D 0
=C2=A0 =C2= =A0 while $loop <=3D $bitmap_counter
=C2=A0 =C2= =A0 =C2=A0 printf "fringe_bmp[%d]: %p\n",$loop,fringe_bmp[$loop]<= /div>
=C2=A0 =C2=A0 =C2=A0 set variable $loop =3D $loop + = 1
=C2=A0 =C2=A0 end
=C2=A0 el= se
=C2=A0 =C2=A0 printf "fringe_bmp =3D=3D NULL= \n\n"
=C2=A0 end
=C2=A0 = printf "\n\n\n\
=C2=A0>>>>>>&= gt;>>>>>>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<<<<= ;<<<<<<<<<=C2=A0 \n\
=C2= =A0 =C2=A0 =C2=A0 This is the end of the pre-local-load phase of startup.= =C2=A0 =C2=A0 \n\
=C2=A0 =C2=A0 =C2=A0 So far nothin= g has gone wrong.=C2=A0 Next, that changes.=C2=A0 =C2=A0 =C2=A0 =C2=A0 \n\<= /div>
=C2=A0>>>>>>>>>>>&g= t;>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<<<<<<<<<= <<<<=C2=A0 \n\n\n"
=C2=A0 tbreak ps= elect
=C2=A0 commands
=C2=A0 = =C2=A0 printf "\n\n\n\
=C2=A0>>>>&g= t;>>>>>>>>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<&l= t;<<<<<<<<<<<=C2=A0 \n\
=C2=A0 =C2=A0 =C2=A0 Here's the *actual* end of what happens befor= e connecting=C2=A0 \n\
=C2=A0 =C2=A0 =C2=A0 a client= session.=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 \n\
=C2=A0 =C2=A0 =C2=A0 We've loaded thr= ee dynamic bitmaps from package files.=C2=A0 =C2=A0 =C2=A0\n\
=C2=A0 =C2=A0 =C2=A0 They've been initialized into fringe_bit= maps, and so far as\n\
=C2=A0 =C2=A0 =C2=A0 emacs is= concerned, are ready to use should GUI client=C2=A0 =C2=A0 =C2=A0\n\
=
=C2=A0 =C2=A0 =C2=A0 connect later.=C2=A0 But our test fo= r whether initializing those\n\
=C2=A0 =C2=A0 =C2=A0= bitmaps required calling rif->define_fringe_bitmap(), ie,=C2=A0 \n\
=C2=A0 =C2=A0 =C2=A0 'rif && rif->define= _fringe_bitmap', came up false.=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\n\
=C2=A0 =C2=A0 =C2=A0 Obviously that's not true; wh= en we start a GUI frame we=C2=A0 =C2=A0 \n\
=C2=A0 = =C2=A0 =C2=A0 will need the cairo structures it creates.=C2=A0 The way thin= gs \n\
=C2=A0 =C2=A0 =C2=A0 stand, they won't be= , but emacs will assume they are and=C2=A0 =C2=A0\n\
=C2=A0 =C2=A0 =C2=A0 try to use them.=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\n\n\
=C2=A0 = =C2=A0 =C2=A0 Connecting a client frame and opening a file that will=C2=A0 = =C2=A0 =C2=A0\n\
=C2=A0 =C2=A0 =C2=A0 cause us to tr= y to draw the bitmaps...=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0\n\
=C2=A0>>>>= ;>>>>>>>>>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<= ;<<<<<<<<<<<<=C2=A0 \n\n\n"
<= div dir=3D"auto">=C2=A0 =C2=A0 continue
=C2=A0 end
=C2=A0 continue
end

printf "\n\n =3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D \n\n\
=C2=A0 =C2=A0CWD: ~/self/workbench/e= macs/master/src\n\
=C2=A0 =C2=A0CMDLINE: gdb -x ../.= ./cairo_bug/gdb_script \\\n\
=C2=A0 =C2=A0 =C2=A0--a= rgs ./emacs --fg-daemon=3Dcairo \n\n\
=C2=A0 =C2=A0g= db_script contents: \n\n"

!cat ../../cairo_bug/gdb_script

printf "\n\nhere goes nothing...\n\n"
<= div dir=3D"auto">

On Sat, Aug 10, 2019, 05:39 Eli Zaretskii,= <eliz@gnu.org> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">> From: Liam Quinlan <liamkquinlan@= gmail.com>
> Date: Fri, 9 Aug 2019 11:40:21 -0400
>
> It is definitely specific to cairo builds.=C2=A0 The 'fringe_bmp&#= 39; 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).=C2=A0 =C2=A0Assuming you can accomplish this (flymake-erro= r-bitmap uses flymake-double-exclaimation-mark,
> flymake-fringe-indicator-position isn't nil, fringe-mode is on, et= c), the steps to reproduce are very simple:
>
> 1. build --with-cairo, using any x toolkit
> 2. start an emacs server with --daemon option=C2=A0 (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.=C2=A0 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)?=C2=A0 Without that, I'm not sure I understand th= e
scenario, since after the emacsclient connection Emacs already has a
fringe-capable frame, so fringe related code should work.=C2=A0 I'm
probably missing something.

Also, I'd like to be able to reproduce without flymake.=C2=A0 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.=C2=A0 It
> can be any fringe-bitmap defined in package that gets loaded during th= e daemon process's own startup.
> Packages that don't load until emacsclient connects are fine, as b= y that point an x frame exists and
> SELECTED_FRAME will work.

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

Thanks.
--0000000000002d082f058fe94413--