From unknown Thu Sep 11 13:55:26 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#38966 <38966@debbugs.gnu.org> To: bug#38966 <38966@debbugs.gnu.org> Subject: Status: 27.0.60; Assertion failure in set_cursor_from_row Reply-To: bug#38966 <38966@debbugs.gnu.org> Date: Thu, 11 Sep 2025 20:55:26 +0000 retitle 38966 27.0.60; Assertion failure in set_cursor_from_row reassign 38966 emacs submitter 38966 martin rudalics severity 38966 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 06 04:19:10 2020 Received: (at submit) by debbugs.gnu.org; 6 Jan 2020 09:19:10 +0000 Received: from localhost ([127.0.0.1]:45002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioOXW-0004GY-66 for submit@debbugs.gnu.org; Mon, 06 Jan 2020 04:19:10 -0500 Received: from lists.gnu.org ([209.51.188.17]:60295) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioOXU-0004GR-8C for submit@debbugs.gnu.org; Mon, 06 Jan 2020 04:19:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52993) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ioOXS-0008K1-Ey for bug-gnu-emacs@gnu.org; Mon, 06 Jan 2020 04:19:08 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: ** X-Spam-Status: No, score=2.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,SPOOFED_FREEMAIL autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ioOXQ-0000YZ-TC for bug-gnu-emacs@gnu.org; Mon, 06 Jan 2020 04:19:06 -0500 Received: from mout.gmx.net ([212.227.17.20]:53357) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ioOXQ-0000WE-FP for bug-gnu-emacs@gnu.org; Mon, 06 Jan 2020 04:19:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578302342; bh=tP/ErOrHOTRU7FrCwcqEfpo3HhHP/oy52VE6KZebmis=; h=X-UI-Sender-Class:To:From:Subject:Date; b=DngPcTFCPEzHxE3OvXSFcmiIPw8y9byH/nc/h339mjh5ASmKOPVoKDS0Rskq+KR7B aSoacScEzkEa4/JqoW1X5HJ7NediMfNYU3jbPS69aNoF2IX+M9yLkq2K8oKa9MYfD4 GRsKUvln8ri1vMmEbjTHtvD79JO+3i4o2lKVgSgI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([212.95.5.81]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MNbkp-1j3QBq3Njn-00P4kW for ; Mon, 06 Jan 2020 10:19:01 +0100 To: Bug-Gnu-Emacs From: martin rudalics Subject: 27.0.60; Assertion failure in set_cursor_from_row Message-ID: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> Date: Mon, 6 Jan 2020 10:19:02 +0100 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------F2C71189F0B188B8A99F833D" Content-Language: de-AT X-Provags-ID: V03:K1:VaO2ViKnCrvtFRFa0IvVRSStgKg9NlmhgHsBoGjHYpHbRC6QyXG 6Vlwoz0mIWgTvb17llM/y4LW1+r99N4fgXPxYYX8rVVowr7ZcmnwqQ6QD3JeRlqFr8KmiUx NeCsflrPibOPL0fbxaCh9MNv07nMx5oMT+kskMTo59iVFtXmezkoBDuEica+BHjVqYbliVS eu7UMSbCJu8j0vu/vmNMg== X-UI-Out-Filterresults: notjunk:1;V03:K0:/eYiNbGcWi0=:UiQqauBCremL3/JjrIseYN tw5JfIgjoHsaBiSf5Fs0pM/GzU/YHU7RewhVVhsrjRZ3b4tY7NigqRCqEEvqw+yFqg+kbiBvk Q5wz+fcWqAfc5LnBaBjobrHpJjwO2Dl0CmX5jzOSwu+995CjAAniyCc8LTCZd0lhqGtV84Fd5 9Jl9ZYILG1PqcoXsTPQ0CurmWgOO7DWQMNJQ/WTYw0L13e6JvlZPm0FUTBum/EduxU2YAQ8Zn Nc2gv/qPY2WeriBfINzZY9/3PquNRcl3LJrxNmu5lUvWRd9O0+0SO0D7/jzkTFBa9e6BaFJ0X Up+x+siL8pWiYp6yYH0LPij648zDrR4frI+ntqHkDISxkU6B0aTVx1yBuIzfBll/+VycIpGjb Ylj3G7JuYiEX6HEN9Vvu725VXocfVK6b/CwXQuovc4W+6VpQuVLCQVx9bu8B2O5rcv8tICpNA 2RflBQqaD1JhHBghTa6JKUAIOzAuRsHun3aJXeNwoSfWrnHvaDr54Taf9ValpCphVtEK01oT9 tpnC41YaktQL5W+fafBjcpB7/Beup4u+uUzbgltXyiwvY/GQZBNIzDLKslIHFtx0t5l2TU0yH Mc0Vm+vZG/He4sRrHDZlcwii37DmNu3TGIyWVNATiPg1E3jMiz6c+0TLA/HjfyPhEqRHS5tIN 84xDXcXo47qWwkuuAEZPPmmu7NRH2tcjCTYxsbcoOX985Ve+BoIVWHBzytz8sNK7K08pqHzhb 4msdHo+2loE3mnPRcFVFcjmCwYYpqvmgBKIS/3diX7+gT28aRAa9C69u9x5G0M4BqavjudJdV oPLXsv/GpqrRrEUdivKNwjs6ZJmVCctdMfz+E7YkPle2OP4XYfrkQke/SXYRdcQ57X96+fXLb lu2ziHVbew3jEmF04XoY7Pvxm8wIiiwjfNb9VjZvpwxY37cB5yHuJa3kfPTdNKF6U4t+olAYv dwbZIsa7r1+4Ke4O2tmAzAZ1kSx6IKaxqIQ7dwkdseZWQxwb0BLJtGpEeHwX7q1W4jSmzYrEk rkQQ6YYqdoqSqmvj5o9k56b0KvjivBJ/2HFMRxQmWtTRcX00lh6kQU/IjW2ae2Nlj31iF1kCk BYT07L5PHxJHAQLsyN+Q8712nEvP4X7GzCl/eYpCrBWkve/PupqXWVmNnEgQHikPYk43+Jo0P SBhxLcDIP1sGOgGsIdAHtqpcujOvdMHYehYbY/fMwbl6w3LcumI821MNC0fgHnnJwJhMajX5n JwkoTGk5YUHHPtRwULQvko8mmyKjxyKEKGUEWkw== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.20 X-Spam-Score: 0.6 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) This is a multi-part message in MIME format. --------------F2C71189F0B188B8A99F833D Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit In GNU Emacs 27.0.60 (build 13, x86_64-w64-mingw32) of 2020-01-05 built on MACHNO Repository revision: 7f01dfca5600fcd3e3548aee50734aab4b96b02f Repository branch: emacs-27 With emacs -Q load the attached test-set-cursor-from-row.el and use the mouse to drag the upper mode line up and down. As soon as one of the windows gets sufficiently small, I get an assertion failure like Thread 1 hit Breakpoint 1, terminate_due_to_signal (sig=22, backtrace_limit=2147483647) at ../../src/emacs.c:371 371 signal (sig, SIG_DFL); (gdb) bt #0 terminate_due_to_signal (sig=22, backtrace_limit=2147483647) at ../../src/emacs.c:371 #1 0x00000004002c13cd in die (msg=0x400974295 "!row->mode_line_p", file=0x400970642 "../../src/xdisp.c", line=16249) at ../../src/alloc.c:7246 #2 0x000000040007ca89 in set_cursor_from_row (w=0x76c8500, row=0x76b0070, matrix=0x76cd580, delta=0, delta_bytes=0, dy=0, dvpos=0) at ../../src/xdisp.c:16249 #3 0x0000000400087177 in redisplay_window (window=XIL(0x76c8505), just_this_one_p=false) at ../../src/xdisp.c:18780 #4 0x000000040007c87c in redisplay_window_0 (window=XIL(0x76c8505)) at ../../src/xdisp.c:16190 #5 0x000000040031a182 in internal_condition_case_1 (bfun=0x40007c83d , arg=XIL(0x76c8505), handlers=XIL(0x6421ebb), hfun=0x40007c801 ) at ../../src/eval.c:1379 #6 0x000000040007c7d3 in redisplay_windows (window=XIL(0x76c8505)) at ../../src/xdisp.c:16170 #7 0x000000040007c785 in redisplay_windows (window=XIL(0x76c82f5)) at ../../src/xdisp.c:16164 #8 0x000000040007b0ad in redisplay_internal () at ../../src/xdisp.c:15638 #9 0x00000004000789af in redisplay () at ../../src/xdisp.c:14865 #10 0x00000004001b6162 in read_char (commandflag=1, map=XIL(0x77dcfb3), prev_event=XIL(0), used_mouse_menu=0xbff25f, end_time=0x0) at ../../src/keyboard.c:2493 #11 0x00000004001c93dd in read_key_sequence (keybuf=0xbff490, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at ../../src/keyboard.c:9553 #12 0x00000004001b28fc in command_loop_1 () at ../../src/keyboard.c:1350 #13 0x000000040031a08d in internal_condition_case (bfun=0x4001b23c6 , handlers=XIL(0x90), hfun=0x4001b1807 ) at ../../src/eval.c:1355 #14 0x00000004001b1f3c in command_loop_2 (ignore=XIL(0)) at ../../src/keyboard.c:1091 #15 0x00000004003194e2 in internal_catch (tag=XIL(0xdfe0), func=0x4001b1f0a , arg=XIL(0)) at ../../src/eval.c:1116 #16 0x00000004001b1e92 in command_loop () at ../../src/keyboard.c:1070 #17 0x0000000000000000 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) Lisp Backtrace: "redisplay_internal (C function)" (0x0) The immediate cause is that the *scratch* window has a header _and_ a tab line. Disabling either of these makes the failure disappear. The culprit is IIUC this part of xdisp.c /* Finally, fall back on the first row of the window after the header line (if any). This is slightly better than not displaying the cursor at all. */ if (!row) { row = matrix->rows; if (row->mode_line_p) ++row; } set_cursor_from_row (w, row, matrix, 0, 0, 0, 0); which is no more valid because the first row is now the tab line of the *scratch* window. In this case the line we get by ++row is the header line triggering the subsequent assertion failure /* Don't even try doing anything if called for a mode-line or header-line row, since the rest of the code isn't prepared to deal with such calamities. */ eassert (!row->mode_line_p); if (row->mode_line_p) return false; If my analysis is correct, we should probably skip two lines to move to the first text line of the window. But I would not exclude the possibility (I have not tried to produce such behavior yet) that that third line does not even exist (what would the "(if any)" in the comment otherwise allude to?) or at least is the mode line of that window and the assertion failure would trigger again. So I think we should do two things there: (1) skip subsequent lines with row->mode_line_p enabled and (2) not call set_cursor_from_row when we have consumed all rows. BTW: I would also recommend to rename mode_line_p to something like say "no_text_line_p". Presently, people like me not used to hack the display code, might consider mode_line_p verbatim and not apply its semantics to header or tab lines. martin --------------F2C71189F0B188B8A99F833D Content-Type: text/plain; charset=UTF-8; name="test-set-cursor-from-row.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-set-cursor-from-row.el" KHByb2duDQogICh0YWItbGluZS1tb2RlIDEpDQogIChydWxlci1tb2RlIDEpDQogIChzZXRx DQogICBtb2RlLWxpbmUtZm9ybWF0DQogICAoY29ucyAocHJvcGVydGl6ZQ0KCSAgIiAiICdk aXNwbGF5DQogICAgICAgICAgKGNyZWF0ZS1pbWFnZSAiLyogWFBNICovIHN0YXRpYyBjaGFy ICogaW1hZ2VbXSA9IHsNClwiMyA2MCAxIDFcIiwNClwiMCBjICMwMGFhZmZcIiwNClwiMDAw XCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixc blwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIw MDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwi LFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5c IjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAw XCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixc blwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIw MDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwi LFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5c IjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAw XCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIg0K fTsiICd4cG0gdCA6YXNjZW50ICdjZW50ZXIpKQ0KCSBtb2RlLWxpbmUtZm9ybWF0KSkNCiAg KHNldHEgd2luZG93LW1pbi1oZWlnaHQgMCkNCiAgKHNldHEgd2luZG93LW1pbi13aWR0aCAw KQ0KICAoc3BsaXQtd2luZG93KSkNCg== --------------F2C71189F0B188B8A99F833D-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 06 12:14:50 2020 Received: (at 38966) by debbugs.gnu.org; 6 Jan 2020 17:14:50 +0000 Received: from localhost ([127.0.0.1]:46605 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioVxp-0000GQ-S6 for submit@debbugs.gnu.org; Mon, 06 Jan 2020 12:14:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39698) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioVxo-0000GE-Fp for 38966@debbugs.gnu.org; Mon, 06 Jan 2020 12:14:48 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58626) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ioVxj-0007EP-1v; Mon, 06 Jan 2020 12:14:43 -0500 Received: from [176.228.60.248] (port=1709 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ioVxh-0001xx-Hb; Mon, 06 Jan 2020 12:14:42 -0500 Date: Mon, 06 Jan 2020 19:14:49 +0200 Message-Id: <83lfqkecc6.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> (message from martin rudalics on Mon, 6 Jan 2020 10:19:02 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: martin rudalics > Date: Mon, 6 Jan 2020 10:19:02 +0100 > > The immediate cause is that the *scratch* window has a header _and_ a > tab line. Disabling either of these makes the failure disappear. > > The culprit is IIUC this part of xdisp.c > > /* Finally, fall back on the first row of the window after the > header line (if any). This is slightly better than not > displaying the cursor at all. */ > if (!row) > { > row = matrix->rows; > if (row->mode_line_p) > ++row; > } > set_cursor_from_row (w, row, matrix, 0, 0, 0, 0); > > which is no more valid because the first row is now the tab line of > the *scratch* window. In this case the line we get by ++row is the > header line triggering the subsequent assertion failure > > /* Don't even try doing anything if called for a mode-line or > header-line row, since the rest of the code isn't prepared to > deal with such calamities. */ > eassert (!row->mode_line_p); > if (row->mode_line_p) > return false; Thanks for the analysis. I agree with you. A proposed patch is below. > If my analysis is correct, we should probably skip two lines to move > to the first text line of the window. But I would not exclude the > possibility (I have not tried to produce such behavior yet) that that > third line does not even exist (what would the "(if any)" in the > comment otherwise allude to?) or at least is the mode line of that > window and the assertion failure would trigger again. I don't expect to have a window that has no lines showing text. I believe we don't allow creation/resizing of windows to such a small size? If that's not guaranteed, I'm okay with adding an assertion somewhere, but that would be a separate problem: we never expected such a calamity even before tab-lines were added. > So I think we should do two things there: (1) skip subsequent lines > with row->mode_line_p enabled and (2) not call set_cursor_from_row > when we have consumed all rows. If we don't call set_cursor_from_row, we will not have a cursor displayed where it should be, which is a display bug in and of itself. > BTW: I would also recommend to rename mode_line_p to something like > say "no_text_line_p". Presently, people like me not used to hack the > display code, might consider mode_line_p verbatim and not apply its > semantics to header or tab lines. Sorry, but that ship sailed a long time ago. You will have to make do with the comments in dispextern.h, which document this weirdness. diff --git a/src/xdisp.c b/src/xdisp.c index 3d286cb22f..8b20601a93 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -16244,8 +16244,8 @@ set_cursor_from_row (struct window *w, struct glyph_row *row, bool string_from_text_prop = false; /* Don't even try doing anything if called for a mode-line or - header-line row, since the rest of the code isn't prepared to - deal with such calamities. */ + header-line or tab-line row, since the rest of the code isn't + prepared to deal with such calamities. */ eassert (!row->mode_line_p); if (row->mode_line_p) return false; @@ -17504,6 +17504,8 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, else { row = MATRIX_ROW (w->current_matrix, w->last_cursor_vpos); + if (row->tab_line_p) + ++row; if (row->mode_line_p) ++row; if (!row->enabled_p) @@ -17576,6 +17578,8 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, || row->mode_line_p) { row = w->current_matrix->rows; + if (row->tab_line_p) + ++row; if (row->mode_line_p) ++row; } @@ -17640,8 +17644,9 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, ; else if (rc != CURSOR_MOVEMENT_SUCCESS && MATRIX_ROW_PARTIALLY_VISIBLE_P (w, row) - /* Make sure this isn't a header line by any chance, since - then MATRIX_ROW_PARTIALLY_VISIBLE_P might yield true. */ + /* Make sure this isn't a header line nor a tab-line by + any chance, since then MATRIX_ROW_PARTIALLY_VISIBLE_P + might yield true. */ && !row->mode_line_p && !cursor_row_fully_visible_p (w, true, true, true)) { @@ -18769,11 +18774,13 @@ redisplay_window (Lisp_Object window, bool just_this_one_p) } } /* Finally, fall back on the first row of the window after the - header line (if any). This is slightly better than not - displaying the cursor at all. */ + tab-line and header line (if any). This is slightly better + than not displaying the cursor at all. */ if (!row) { row = matrix->rows; + if (row->tab_line_p) + ++row; if (row->mode_line_p) ++row; } @@ -19787,7 +19794,9 @@ row_containing_pos (struct window *w, ptrdiff_t charpos, ptrdiff_t mindif = BUF_ZV (XBUFFER (w->contents)) + 1; int last_y; - /* If we happen to start on a header-line, skip that. */ + /* If we happen to start on a header-line or a tab-line, skip that. */ + if (row->tab_line_p) + ++row; if (row->mode_line_p) ++row; @@ -22380,7 +22389,7 @@ find_row_edges (struct it *it, struct glyph_row *row, if (STRINGP (it->object) /* this is not the first row */ && row > it->w->desired_matrix->rows - /* previous row is not the header line */ + /* previous row is not the header line or tab-line */ && !r1->mode_line_p /* previous row also ends in a newline from a string */ && r1->ends_in_newline_from_string_p) From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 06 14:06:30 2020 Received: (at 38966) by debbugs.gnu.org; 6 Jan 2020 19:06:31 +0000 Received: from localhost ([127.0.0.1]:46819 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioXhu-0005Cb-M3 for submit@debbugs.gnu.org; Mon, 06 Jan 2020 14:06:30 -0500 Received: from mout.gmx.net ([212.227.17.20]:46147) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioXht-0005CO-6l for 38966@debbugs.gnu.org; Mon, 06 Jan 2020 14:06:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578337582; bh=8g731mT0QH+EyixjFKWbjHElOtUXEfLNnwy+P3AfjTw=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=AvCb3zc3XM+2pIuGJaoVbe+Kma8ls4DgzvtNxD2lOEXCZV+jA0LDfei2FqkfYq6jU wwFaqAFEPacgbCqlbFAcj14QNsJQyHAx9hnPThZLnywq06sKtsgmo8stUn0H3PWRcv ONYS2SFNUOyhO3pjfn9OBzonH0RAOfuFYDdeYYvE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.100] ([212.95.5.79]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mjj87-1jXp0H2Gxn-00lEDM; Mon, 06 Jan 2020 20:06:22 +0100 Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row To: Eli Zaretskii References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> From: martin rudalics Message-ID: <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> Date: Mon, 6 Jan 2020 20:06:21 +0100 MIME-Version: 1.0 In-Reply-To: <83lfqkecc6.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------21C8625A8A7B55E7B3D33EB7" Content-Language: de-AT X-Provags-ID: V03:K1:L325HHkKhCcIFLnbsxaGiVHlbjFy166vdMw12RK3fZ0HMt2wklS jBxVNec9G2IzLsT0/dhJuQsSkyFGxwMXyA/J8siXGCVVaCqnE1GgxWoo5AdYuZuLd3AkI4G 35WajQ1MLmqzdj/GDMCdB1Ei6v58ppxC2nCK4KAfv5rsNsD2gViM3QCQCrMVjReyyuyBUoX P+ljhStheLVVHlbSXDtHA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:xUOpNmL+Ntc=:7sMuA2/4/3Os0L/wD8L7ej syujldc5bP0tbXe3//Jl0/ud5H9q0CbvQ4KpXSkLSX2clSs5kuvkNs2w1dyRH9TE6UEiiseTV hfp7HRyC1YqtlMIviAE2fM+jm0NC0QameAXxrqB6tw5UwLzPO8ydH/od809cq86A+1oNft9n+ 4VlX/GHQDTDEkoQnUwO8LoLdwkRW8KYCJH0Xqy6EcXd1XALQQOCYu0uANTcNgKvU22CZZDfG+ LZwOEw7YVfBrbbLNFrhKl/2/GhESpSnkM3y5yjB58vO0aIkj029dBpTWS0p4XmgX7Q5Gq875Q Xuiw5gjk7nVfZvp5C7l4bSioVoBS1OnZkcYIpF0BkKO2MgKN/eCJGatototBswdlfEg2xfPkx NQ/jsntBRv7C5BEGl+fi4vXAZtlqnp5+FjU7GV6JRbt/HaV3kGfKB1hBPIdMJt+g04LdaO1P9 RzOUvNM0qYeqofbxrxc2mIMbkdklWLmxonthPcA76JyaPfRsZ7dvDFXg8M4/mWrEmTtv0UZ18 sXuu+fr/Ww89UOVO5jc/XuLd+1IIWGSqcIierqu0h3c4EHGBhEyhdYO+zJv/V5ET7YrSfFiQk cW+H6OWMDo62E7wBHzsSYpdncoLJmbLnbnTsRfUnt2+7PFSX3y2Q7HaJP0jv458nHV3r3Gq3k DVsayqvYlcbjCDVB39u8R9DOEQBO1Ps58MdPmURbZDsET67Sz5+7lsU2DEGIyCPxTdqFyQmCe S8a8EgmMnzfc1PA/YaRbhEntqRXnBiorjPB5feA6XXPug7QMsEvUNZM/+LEmClb6UKyfLvKE0 m0lCuWqQL8dkMgdvrJXC0Em4dEX9BJVcfm2Ti+BW9NUi6p5FLTzTxlsSdmtUOvel/ob+uh/fL MC7IbrX5PbJu3jR6eCBEd2EpWv6+1gj9qZIVkq6WvJEW6s9DBFGFB5qVbChsZioYAGFaTV3uI B58O2zM1aISMh7qY7tZS4C20Fu3fje11slqk/yM86OKCYfbiczJqV8r6uul3NJUBMTiqzrMA+ k/FMR2xeNtgSaU9dOxqLiVY51oe5rqn8fHEJqkkCa6edY31HpWmYpPaW20j+g8fpbNz4z/GTQ 7APO8pPaJLzHzqkb9zB/M6mrxSjI776qGDmg5pA/d0cT5OiktmwPKvjNvmKvPd7mquPQFS2AM Ud9hT4OYyR9vNndbquYWTbqwPJ1LRSSi1I3IeaZZEAcOAUMtiUa9bPZz/Q89H8t3mzyY2C+t3 ArGMHeQFzfiusFg1UMz4PE7d3Sro62x+SpUql6w== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------21C8625A8A7B55E7B3D33EB7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > I don't expect to have a window that has no lines showing text. I > believe we don't allow creation/resizing of windows to such a small > size? If that's not guaranteed, I'm okay with adding an assertion > somewhere, but that would be a separate problem: we never expected > such a calamity even before tab-lines were added. We did. Try with emacs 26 loading my old test-popup-2.el (attached once more). Type C-x 2 and make the lower window as low as you can. Now hit F2. The lower window shows no text. So we did allow windows showing no text before and I see no reason why we should call that a calamity. Rather, we should eliminate all assertions that forbid zero size windows and simply not draw a cursor when a window's body shrinks to zero pixels. All applications I know of tolerate such zero size "windows". I plan a slight modification that would allow the minibuffer window to shrink to zero lines whenever it's not used. OTOH, zero size "normal" windows would allow to show the minibuffer window in a frame that can acommodate only one or two lines. > If we don't call set_cursor_from_row, we will not have a cursor > displayed where it should be, which is a display bug in and of itself. Isn't that statement overly conservative? Sooner or later, Emacs will at least have to allow a mode where the region is not destroyed when a window is scrolled, allowing the cursor to disappear from the visible part of its buffer. We should keep Emacs distinctive. But being distinctive doesn't necessarily mean to be restrictive. >> BTW: I would also recommend to rename mode_line_p to something like >> say "no_text_line_p". Presently, people like me not used to hack the >> display code, might consider mode_line_p verbatim and not apply its >> semantics to header or tab lines. > > Sorry, but that ship sailed a long time ago. You will have to make do > with the comments in dispextern.h, which document this weirdness. Which comment? In either case, rest assured that ordinary people will have considerable troubles understanding code like the proposed if (row->tab_line_p) ++row; if (row->mode_line_p) ++row; Notwithstanding my concerns, the patch fixes the bug here. Many thanks, martin --------------21C8625A8A7B55E7B3D33EB7 Content-Type: text/plain; charset=UTF-8; name="test-popup-2.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-popup-2.el" KHNldC1mcmFtZS1wb3NpdGlvbiBuaWwgMCAwKQ0KKHN3aXRjaC10by1idWZmZXIgKGZpbmQt ZmlsZS1ub3NlbGVjdCAiYzovdGVtcC90ZXN0LXBvcHVwLmVsIikpDQooc2V0cSB3aW5kb3ct cmVzaXplLXBpeGVsd2lzZSB0KQ0KKHNldHEgd2luZG93LW1pbi1oZWlnaHQgMCkNCihzZXQt d2luZG93LXNjcm9sbC1iYXJzIChtaW5pYnVmZmVyLXdpbmRvdykgMCBuaWwgMCBuaWwpDQoo ZGVmdmFyIG9sZC1tb2RlLWxpbmUtZm9ybWF0IG1vZGUtbGluZS1mb3JtYXQpDQoNCihkZWZ1 biBmb28tbWVzc2FnZSAoJm9wdGlvbmFsIG5ld2xpbmUpDQogIChtZXNzYWdlDQogICAoY29u Y2F0IChpZiBuZXdsaW5lICJcbiIgIiIpDQoJICAgInRvdGFsOiAlcywgYm9keTogJXMsIG1v ZGU6ICVzIikNCiAgICh3aW5kb3ctcGl4ZWwtaGVpZ2h0KSAod2luZG93LWJvZHktaGVpZ2h0 IG5pbCB0KQ0KICAgKHdpbmRvdy1tb2RlLWxpbmUtaGVpZ2h0KSkpDQoNCihkZWZ1biBmb28g KCkNCiAgKGludGVyYWN0aXZlKQ0KICAoZm9vLW1lc3NhZ2UpKQ0KDQooZ2xvYmFsLXNldC1r ZXkgW2YxXSAnZm9vKQ0KDQooZGVmdW4gdGVzdC1wb3B1cCAoKQ0KICAoaW50ZXJhY3RpdmUp DQo7OyAgIChzZXQtZmFjZS1hdHRyaWJ1dGUgJ21vZGUtbGluZSBuaWwgOmhlaWdodCAyMDAp DQo7OyAgIChzZXQtZmFjZS1hdHRyaWJ1dGUgJ21vZGUtbGluZS1pbmFjdGl2ZSBuaWwgOmhl aWdodCAyMDApDQogIChzZXRxDQogICBtb2RlLWxpbmUtZm9ybWF0DQogICAoY29ucyAocHJv cGVydGl6ZSAiICIgJ2Rpc3BsYXkNCiAgICAgICAgICAgICAgICAgICAgIChjcmVhdGUtaW1h Z2UgIi8qIFhQTSAqLyBzdGF0aWMgY2hhciAqIGltYWdlW10gPSB7DQpcIjMgNjAgMSAxXCIs DQpcIjAgYyAjMDBhYWZmXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAw MFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIs XG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwi MDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBc IiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0K XCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAw MFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIs XG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwi MDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBc IixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxu XCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAw MFwiLFxuXCIwMDBcIixcblwiMDAwXCINCn07IiAneHBtIHQgOmFzY2VudCAnY2VudGVyKSkN CgkgbW9kZS1saW5lLWZvcm1hdCkpDQogIChmb28tbWVzc2FnZSB0KSkNCg0KKGdsb2JhbC1z ZXQta2V5IFtmMl0gJ3Rlc3QtcG9wdXApDQoNCihkZWZ1biBiYXIgKCkNCiAgKGludGVyYWN0 aXZlKQ0KICAoc2V0cSBtb2RlLWxpbmUtZm9ybWF0IG9sZC1tb2RlLWxpbmUtZm9ybWF0KSkN Cg0KKGdsb2JhbC1zZXQta2V5IFtmM10gJ2JhcikNCg== --------------21C8625A8A7B55E7B3D33EB7-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 06 14:50:51 2020 Received: (at 38966-done) by debbugs.gnu.org; 6 Jan 2020 19:50:51 +0000 Received: from localhost ([127.0.0.1]:46839 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioYOo-0006Jf-4D for submit@debbugs.gnu.org; Mon, 06 Jan 2020 14:50:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47316) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioYOn-0006JN-78 for 38966-done@debbugs.gnu.org; Mon, 06 Jan 2020 14:50:49 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33472) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ioYOh-0007Hl-QX; Mon, 06 Jan 2020 14:50:43 -0500 Received: from [176.228.60.248] (port=3506 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ioYOh-0004nX-95; Mon, 06 Jan 2020 14:50:43 -0500 Date: Mon, 06 Jan 2020 21:50:51 +0200 Message-Id: <8336cse544.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> (message from martin rudalics on Mon, 6 Jan 2020 20:06:21 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966-done Cc: 38966-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38966@debbugs.gnu.org > From: martin rudalics > Date: Mon, 6 Jan 2020 20:06:21 +0100 > > > I don't expect to have a window that has no lines showing text. I > > believe we don't allow creation/resizing of windows to such a small > > size? If that's not guaranteed, I'm okay with adding an assertion > > somewhere, but that would be a separate problem: we never expected > > such a calamity even before tab-lines were added. > > We did. OK, let me rephrase: _I_ didn't, okay? IOW, the display code doesn't, and AFAIR never did. (For some reason I seem to make people angry today, and you seem to be one of them. Apologies -- I don't know for what.) > Try with emacs 26 loading my old test-popup-2.el (attached once > more). Type C-x 2 and make the lower window as low as you can. Now > hit F2. The lower window shows no text. Why is such a window useful? I thought we had a minimum window height beyond which we didn't allow to resize windows. Isn't that true anymore? > I plan a slight modification that would allow the minibuffer window to > shrink to zero lines whenever it's not used. OTOH, zero size "normal" > windows would allow to show the minibuffer window in a frame that can > acommodate only one or two lines. All I'm saying is that making the display code prepared to deal with such windows might take more changes, and this would be a separate issue, suitable for master, not for the release branch. OK? > > If we don't call set_cursor_from_row, we will not have a cursor > > displayed where it should be, which is a display bug in and of itself. > > Isn't that statement overly conservative? Sooner or later, Emacs will > at least have to allow a mode where the region is not destroyed when a > window is scrolled, allowing the cursor to disappear from the visible > part of its buffer. That's not the same situation. If point is not in the window, it's OK not to display the cursor. But I'm talking about a situation where point _is_ in the window. > > Sorry, but that ship sailed a long time ago. You will have to make do > > with the comments in dispextern.h, which document this weirdness. > > Which comment? This one: /* True means row is a mode or header/tab-line. */ bool_bf mode_line_p : 1; > In either case, rest assured that ordinary people will > have considerable troubles understanding code like the proposed > > if (row->tab_line_p) > ++row; > if (row->mode_line_p) > ++row; I added comments explaining what's going on. > Notwithstanding my concerns, the patch fixes the bug here. Thanks, pushed to the emacs-27 branch, and closing the bug. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 04:52:28 2020 Received: (at 38966-done) by debbugs.gnu.org; 7 Jan 2020 09:52:28 +0000 Received: from localhost ([127.0.0.1]:47268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iolXH-0005Q2-Pg for submit@debbugs.gnu.org; Tue, 07 Jan 2020 04:52:28 -0500 Received: from mout.gmx.net ([212.227.15.19]:36539) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iolXE-0005Pa-Uf for 38966-done@debbugs.gnu.org; Tue, 07 Jan 2020 04:52:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578390738; bh=599GMrw7wd6L08plZqTh8NNAduSHI6vmGl7O9WQoWh4=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=Y4uX4+kHoju6m+fUBcKEO4Zp1FQ4ZvBm6e2UgMS466C9KB00RiGLgzRVwZJTAl62v Fg+QBksD+tuflBN2I49S89tzXc1G6crNgpPx+KkRwd7ljdzlHh9Fw6U+srYTrTHv+1 +LRUxi3SVFQBCKLIXsOlYQKW0rKMxvBZNBHKfnKU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.102] ([46.125.249.116]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N2E1M-1jq7XI1INS-013aRy; Tue, 07 Jan 2020 10:52:18 +0100 Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row To: Eli Zaretskii References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> From: martin rudalics Message-ID: Date: Tue, 7 Jan 2020 10:52:18 +0100 MIME-Version: 1.0 In-Reply-To: <8336cse544.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: de-AT Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:M3+58yBiXeorLGCiXxcSBNmmmy5GkbCk+ERetH11s0ypI9I6J8/ qXnwa3OisNU2XQVMSfxvUOHmJkwRJCfHKt/EVgl9zAtDIBLp+TTr1/utdyZt5fGkmcaTtrb D39cNBPuk3KDYYgzRTHXtVP35mnsMqf64YxqJhR+t1pzn6sZdaKb2wp0L9W0Xd2dzozICXS aKwH7lss1QmJBLL/6lbTg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:r0gpcTQZzc4=:NeRBEJuehzH6/T7zpoRVK0 MfVkXYhMnft/83+Unmrkeo8SVJLN00n5hWlE3qH4RHq1CDX44bXR4yA/yDEdJnF4yy8NbHiRo dSgh5liR2DtxQXpLC2CpaQEHWryPkudHgp+p3JsxdYem0t1nyirvOTxFyQ2aVYC37LER5xuQq Hr5W0yM2uNjRGaun09lRax4aSb5Lbhoa9qiHtAtBlK9H9cFDL7NDPx6zaaCsmKxd9ieOWmElg FNY+PQCNc7gVWK6tGFTd4BXOMJgzXIeSZQKwTiQfn2aTevEVcm9mQ0DZwV9MMJxee7ovnWrn1 9tSxaXGQfWP/S9fPj5oCD0ShucqBvbZgkV2I5I/maKWdgScWFXsW+UWaDYD9vOAI+xwIByjLx hLaotFJZt2XA1iCLRwC2EPU0YjqLqXItOGK8mQymcWyUI2GJV3b6bD3yl/v9qbOpMUXk2k2kS JqwgNOUI2INfBE4Dy6BBE8u5Q7BFmA590v8KCVBu0iNTIWYX1cg0IPlarf2diAhYGI8SoxqQu tXaI2sqJoSDMOZzs/D+fSDggnBlTN+0JLMUU+WL91htpbAJWO2QfXsOhWLXXr1P7Jt1x4dEZH QKJA6NvRYB9UZqRvzEYgJKkQTLisccrpwV9VAMyVtApHjfwk/8H4huhFJ34qZkF1ugrJi3/W5 PehAeVh7D17uQG07MaojMeYywNZefYl++XagOdiKhM8R57Hxh1MtohEl5bIwSU+VJZytOLks1 fjSn6c5Qdzm4dPXWXI6ajwug+vjFtdIq0drLffyCx29pFuORBZMun6P3RkcZGuf4b5UGRc+1o tZu09/ahB5DIHEkKxtqwYDSnQ7pD4r4VnI/EhQLQey6uqAQy+3yRyVbC1I7bUZycoKN3r97F0 URQLy/8kYGf+7znUazks68Jt4GAa5RZVrvl/RT4t9kBkGbWift+bAScTFm2dxRBQ8kXAi/Um9 cluaQQn8rbdX6LO5weo9soEOt7J04gDe+N3PV2LFCWPOivGPXSfq30MWu7kTd5F5h34Ma3ZC1 YJ28YAMZm5I557vTkT9yD02gOj71b0NRMKfgybQBnPqEtgVmcylhLBm4a/KO7A9ZamgdvamMp gk2zbKDKPAmagllzIrkgObFxEaNUPqyB2d+dIUh8+LjtzK1Z69swPnDG74q4CpaZ2BYKGLHht 2d64cMrGTv6qXwPeR6ktPyt214zq8lN8aDP2D1I38vRJYtySvy7XjasUwy+PSVCSkcG77wsIo XndVIHg6cG+YE5gaySrc3BdhWQMI98UmIBz5mKjQDtvNQQLoWQ18+DghsJS0= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38966-done Cc: 38966-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Why is such a window useful? Windows with one text line like that of the ediff control panel have been in use for quite some time. They can also arise automatically, for example, when fitting a one line completions window to its buffer. Windows that are made as small as possible are useful when a user wants to make a neigboring window temporarily as large as possible without deleting other windows. Zero height windows can be also useful when they do not display any text but applications want to sample their width in order to, for example, decide how to lay out text in them. > I thought we had a minimum window height > beyond which we didn't allow to resize windows. Isn't that true > anymore? We currently have two minimum heights - 'window-safe-min-height' and the option 'window-min-height'. Both are defined in canonical frame lines and have to be eventually re-interpreted in order to fix bugs like Bug#14825. In this context it would be nice to do away with 'window-safe-min-height' because it only complicates the resizing code without being able to avoid, as we've seen, that a window's text height can drop to zero. > All I'm saying is that making the display code prepared to deal with > such windows might take more changes, and this would be a separate > issue, suitable for master, not for the release branch. OK? Sure. My concerns are only that we should not preclude future changes in this area when making changes on the release branch like adding new assertions. To fix the present bug, for example, I would have simply removed the offending assertion from set_cursor_from_row. Eventually, we might want to show a cursor in a mode line, or scroll or wrap it. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 11:01:06 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 16:01:06 +0000 Received: from localhost ([127.0.0.1]:49069 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iorI2-0002Ek-9m for submit@debbugs.gnu.org; Tue, 07 Jan 2020 11:01:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51250) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iorI0-0002E9-BO for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 11:01:04 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49072) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iorHv-0005I6-5W; Tue, 07 Jan 2020 11:00:59 -0500 Received: from [176.228.60.248] (port=1233 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iorHt-0005h7-2T; Tue, 07 Jan 2020 11:00:57 -0500 Date: Tue, 07 Jan 2020 18:01:07 +0200 Message-Id: <83o8vfcl30.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: (message from martin rudalics on Tue, 7 Jan 2020 10:52:18 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38966-done@debbugs.gnu.org > From: martin rudalics > Date: Tue, 7 Jan 2020 10:52:18 +0100 > > > Why is such a window useful? > > Windows with one text line like that of the ediff control panel have > been in use for quite some time. They can also arise automatically, > for example, when fitting a one line completions window to its buffer. I thought we were talking about windows with zero lines of text. One text line is fine, and should not cause any trouble to the current display code. When testing my patch, I used your code to resized the window to a single 1-pixel high line of text, and saw no problems, including with displaying the cursor. If the use cases you have in mind can make do with one 1-pixel line of text, we will need no changes in the display engine at all to support that. > > All I'm saying is that making the display code prepared to deal with > > such windows might take more changes, and this would be a separate > > issue, suitable for master, not for the release branch. OK? > > Sure. My concerns are only that we should not preclude future changes > in this area when making changes on the release branch like adding new > assertions. To fix the present bug, for example, I would have simply > removed the offending assertion from set_cursor_from_row. Eventually, > we might want to show a cursor in a mode line, or scroll or wrap it. I think we should keep that assertion as long as we don't make the code DTRT with such text-less windows. That assertion only affects developers anyway. The right time for removing the assertion is when we modify the code to support windows with no text rows. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 12:39:04 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 17:39:05 +0000 Received: from localhost ([127.0.0.1]:49198 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iosoq-0006r1-KX for submit@debbugs.gnu.org; Tue, 07 Jan 2020 12:39:04 -0500 Received: from mout.gmx.net ([212.227.17.22]:41859) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioson-0006qU-KO for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 12:39:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578418735; bh=/MvAeH7lY6xEfRuSJol/pYVgWdl5jJYajcjIFr0qgqU=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=i2WsEfwd3cY2vWWl1yyHor3mfo5p/e5YCjiQJy8+iVduQfe73tXw4WwSJ4L4/HQiN BYj+u0GUmEZRWNJ0yO9T+8Gf9A3kPEpL9P/91EUJLTXrd4WgwVvW9d9uw2xRr2BuaS /ivY6O5QTN+RZIfS60kW0CABnqSOjK0szbRqKyqc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.116]) by mail.gmx.com (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MzhnN-1jbMsB3ZDt-00vc86; Tue, 07 Jan 2020 18:38:54 +0100 Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row To: Eli Zaretskii References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> From: martin rudalics Message-ID: <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> Date: Tue, 7 Jan 2020 18:38:54 +0100 MIME-Version: 1.0 In-Reply-To: <83o8vfcl30.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: de-AT Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:vNAOViVUpJjCuZh1G95kWBbcjJgiZtmH4ww9GEDc8cx8Xl3u5lm Xn38ce3XmLiv89z65e9yUf6JTCzghI6XQc2f0eR/oC6DuRf72OAQfeh3Hwa9+/D8aH1PGHd Nx9YJmjbGEnetvtvq3CC3Tq/8zrTWkDNosUPTMfp2l8Eck6bbDQckXvG4khK5AnJjoyn0Nn l3f5II3W9ha5BJsZJW8ng== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:q6ePw8vEX7I=:kyi9SNsuBWNGnTUKC3Pp8H 5SWXeIuwyepKynXQWNwCVb9Y1R8hurLahkOwC3+cZmRyTHpM/KrbjxS/s1rf5YLgP42otZ7LP o1CN8shcYw9eFgv3WKkSDDBFyMBm5I+NurFzljK7mHZFeZpuNVQtT6ywr9nfiqubVr+p3ZSJu IUR9REsewTxCrtkAizVf3XKCoScfUk1Pgn6vNIRvu/2txF5voBkLKVfrDbObi3w//A7xVwMP1 LGWlLQXz6QSmAhhfcaP2c1ylXdbATxwg+1O8RA0Wprme9L2ixnWvaCdQAvBv2M67i9r07nhKl NjjFEBGLRxhRQ3sAsxRcItki/XTTcfG5ObI6B3/Y33IJVzocbd2/yK40VXosk7rSmyGac88sB s2BCvh8yvu0fCFLl3uSFTMun/I2FwJn5HD5RMpnmbvbhPBLu0k6+gsAvmj51v3RW7JqfuZPCF LOJjwvGZfGlyKCh17Y2SJ1zIpimvrCGeuxonwplYIdhfExKt2LZY9VU9zTY+9POwOEcA2Ye4Z ioE3SnQOJuUiGjscmmZYvX863n4LXzWcln9mAUlpp+6u7MFIaVhrmYVTiiYwVB/iwXEUI+g/G k6X7d+4s2wC/z0hk6aBS+XxPMjHQMOzAGPs947KTvrwWxr6OUliTDvX+ceAdGLS6L0m20OQht 6/4tIdAveRyNFlh9KRJGA7nxgpONH7jMo9Q6Qkl2h0Zx1jwKTgF/kCTvedTH1hbLCxQ6gIsjG +7yaTg1Oe2KeqvS7hnN17PrbrA02FOqu1EhYGt/anwCWx3ipfd2K7It9clf50QcbtIizsHtJa xslsL0kR4ZrRUnOh6bmxAVuDCNmFXwytxq02C3ZnywZs2LF3ZHSSkJipy+kBVZoqC4borw1D8 CfcD+u5PCsq738NJmZx8yZWO6ELQnMwZQdp7j+CqN9vjGooN4QKemzdabT8AGDKq6MT+neI19 87kqSWj8WV7QEgfz43gNW8OZfrsZX7Dx1IlbeslJLLEyVdKbiZxmq0bMpX2Hkaz9DHehVQPtG 8+oPdCw8pM1BmY7xXn3DDxQMjFH8Ow+jUqQ/HpPZ/rmCAKbw4wISjqAypb9VD/49P0eStd4z9 TzRqxsWYO3vuflYKn55r9oipFIdzX9BnjJxugnjyOezoHoEE6LNe+h+xVSZt+cEkBzDYISjAc Eri8b9zw7TAMf3WhIkJ0AB1lpRTNXL7bd7eSZ1yEtRjpJNaUbnirhG6FXr4xRoMw0RPK4zjA+ gTEhHiobF3hYSjvF56G9UsEsgQa3D2NdI6W0VmaNrQF8ERu3OyY8ZT2ocurk= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > I thought we were talking about windows with zero lines of text. One > text line is fine, and should not cause any trouble to the current > display code. When testing my patch, I used your code to resized the > window to a single 1-pixel high line of text, and saw no problems, > including with displaying the cursor. We are miscommunicating here. In your previous post you said that > > > I don't expect to have a window that has no lines showing text. I > > > believe we don't allow creation/resizing of windows to such a small > > > size? If that's not guaranteed, I'm okay with adding an assertion > > > somewhere, but that would be a separate problem: we never expected > > > such a calamity even before tab-lines were added. > > > > We did. > > OK, let me rephrase: _I_ didn't, okay? IOW, the display code doesn't, > and AFAIR never did. > > (For some reason I seem to make people angry today, and you seem to be > one of them. Apologies -- I don't know for what.) With my test-popup-2 code you can make the lower window one line high, hit F2 and get a window without text and cursor. Which means that the display code (inadvertently maybe) already does produce and handle windows with zero lines of text. I still don't understand why you thought I was angry when I reported that behavior. > I think we should keep that assertion as long as we don't make the > code DTRT with such text-less windows. That assertion only affects > developers anyway. The right time for removing the assertion is when > we modify the code to support windows with no text rows. Agreed. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 12:47:56 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 17:47:56 +0000 Received: from localhost ([127.0.0.1]:49213 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iosxQ-00077z-Ay for submit@debbugs.gnu.org; Tue, 07 Jan 2020 12:47:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34329) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iosxO-00077j-Tw for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 12:47:55 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:51517) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iosxJ-0008Qv-Hy; Tue, 07 Jan 2020 12:47:49 -0500 Received: from [176.228.60.248] (port=4023 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iosxJ-0005hd-07; Tue, 07 Jan 2020 12:47:49 -0500 Date: Tue, 07 Jan 2020 19:48:00 +0200 Message-Id: <831rsbcg4v.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> (message from martin rudalics on Tue, 7 Jan 2020 18:38:54 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38966@debbugs.gnu.org > From: martin rudalics > Date: Tue, 7 Jan 2020 18:38:54 +0100 > > With my test-popup-2 code you can make the lower window one line high, > hit F2 and get a window without text and cursor. I seem to be unable to do that, so please show detailed instructions starting from "emacs -Q". What I get here is a very thin single line of text, where I still see the cursor (partially) and can type text. > Which means that the display code (inadvertently maybe) already does > produce and handle windows with zero lines of text. Maybe so, but that is just by sheer luck, AFAICT. > I still don't understand why you thought I was angry when I reported > that behavior. If I was mistaken, again, apologies. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 13:23:49 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 18:23:49 +0000 Received: from localhost ([127.0.0.1]:49259 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iotW8-0001c2-UK for submit@debbugs.gnu.org; Tue, 07 Jan 2020 13:23:49 -0500 Received: from mout.gmx.net ([212.227.15.19]:54107) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iotW6-0001bk-Mp for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 13:23:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578421420; bh=GrUAw3jXMjZXlOTYCerDRf7HdDZDuDjU+c0dpEisKKg=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=bNw+jto3h7Yhx4Eba2/KNC3kT1TMVFeGv0higJ3msOEXwoo4VfuUVgVkIgAlyJL8H GkMvtYPAMY0m9gxA9Eb2TtQCgI8OTvds4wVO+GHCy/mJwe4P2seQqsH9Qa5JQSavTx Of7uZIlDULzNQPCuzisTpO/czsZ/FIy2bh5e6yb4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.116]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MCKBc-1iyHQv3dyM-009Rek; Tue, 07 Jan 2020 19:23:40 +0100 Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row To: Eli Zaretskii References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> <831rsbcg4v.fsf@gnu.org> From: martin rudalics Message-ID: <44ffb147-d782-1f62-0ece-10e096cabf15@gmx.at> Date: Tue, 7 Jan 2020 19:23:39 +0100 MIME-Version: 1.0 In-Reply-To: <831rsbcg4v.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------7D5DA8E0DB59F31B82DCFCDF" Content-Language: de-AT X-Provags-ID: V03:K1:pto+45GMnPhJ25loxoEDqlY6BLexKQ9RknnsQxbYxG0e0zuIsvo ZhnT3DDkk2cv8ftwdSII5bDqLDMEVnsypzr5as+N/55uqNH7qPgs68yR3z6ktgo/twUBX+T sglzmoAhB+Ill8cy2Iefh9C/hh+BuZDvXQ6o7jinyy+YsCxwe+1935xr8t2A4XPUuyEmOQ1 bu0i9pQJAWTat+Jw0WKMA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:yLfc3DogpTU=:M9AiHgq/kiJ+bPJkyP5Ybn uJ5jnoyHgpdrdLloB7v2nqoHFLbBSXr6G6NYdUUKfi4VUELlku6gnaBBww2AHLR0Pq03Xiriu ygcWqaCS/sSPBJFqxc+PZi8/CxZitzte5THbsi09T91gnN5lUg8lkvMnYx/iwVioFs9CkjAM0 Eh+FPdb6TD8QUY0B+QHBZHUtA6lL/gq/0DvbsXDSyF7KTcZh05SdlMn/sFKuBDtKRt7W0fR2D dBBz+cO1EPaXdZyLefQ9eGawkR3F4IkpN3Hv8duyfdPcZOb4FKKoObu9Br0faqYVEbEuGXNrE HMXPI3SbGlXbHorRBFiNUAUlazczgFf5CKHrC3REXFT747OcfXPiyrAnjZ5/UbE2zzqV+koD/ ICrpNNB6E35FnkVP7SypKrAKmnPqyG3l/SKgLg/IKbt/39CGyed8swPaBhsSF3qjAY90mW6w/ t1NVuVK3hDJYSgYeTQ7timmi6iCDcccmJaDjaYtOOVMVQZbTIFEvG8ydrfbC9GVV3n2FIaxdF HErAtifxWky3QprY5+rfJHIGqsmjhiuywF0DZ7SbV100dH7eIdQf0Q1jqo/aDm5/aMNXdsyIA iiIrzKv1IIgj+3r2jDDQfD9xShu+tL9cAGk1nH12+SgA0DJt1nxo4fEF4wl+qxegKkmnYXSjE rBjuyEpiLpjq9WnfUT34JzLGxxARfVHkiGeeKBdC/OWrvKUFrm8cgHBmTqer2kIhbze8IDkFK AzynhiUr03l0iWLvOxCPxlAbT558sYw+PQoI72O2zfgtk+zuGrFeH+1PUEZdl4DkiZsiBxgAW NCY6b7Wcap5VygUel4rRxhgyXjJ1lppX58PMQl5jOGd53EG1HgngO8L12IB+KOXYxKALSfhti lI6m8bcz9vb4Ry8bMfttSbmnJ+cpFD/Y5p7QSWzgnnc1fJLlWrYQ55BBR4S9OEa11W4ST5RfE nLq0kG6wvCdUVoOGx5f+b4UNLSfYDyiLpYWJnpEO82qfY3L07H1ORvvLmnKA9G1xlbloLin8D 1B+V3+OQCdqdECeOjqSaRi+3Z9ABZEqK0Ij5KpaSQo2hribc7x/ocfL9X9pdeCHzl4j/Gl+y6 ++1jpTg3F2dfmvkBTJQ7WrnQ0LHWE9imOWfmlkRkx+T9fYEkq8qTRg942EYu2SK9ERKfkkfHk sdwie4Wmwhvkzp2h0Uw3SC4G5yc1ENnLCUHwz1bUmGA7XLIVfDDEnbATyR4ptCYz9RI8eaqko RnXSKgjz0ovj0h2VrFigmBrrNmeVM9B/gagJUuKVzAAs5MHFwZo1lZWAqnOU= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------7D5DA8E0DB59F31B82DCFCDF Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > I seem to be unable to do that, so please show detailed instructions > starting from "emacs -Q". What I get here is a very thin single line > of text, where I still see the cursor (partially) and can type text. I attach a new file test-popup-3.el. With emacs -Q load it, type F1, then F2. After C-x o I can move through the lower window without seeing any cursor or text line. I also attached two screenshots, one before C-x o and one after. If you look hard enough, you can spot the remnants of the scroll bar on the lower window's mode line. martin --------------7D5DA8E0DB59F31B82DCFCDF Content-Type: text/plain; charset=UTF-8; name="test-popup-3.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-popup-3.el" KGRlZnVuIGZvby1tZXNzYWdlICgmb3B0aW9uYWwgbmV3bGluZSkNCiAgKG1lc3NhZ2UNCiAg IChjb25jYXQgKGlmIG5ld2xpbmUgIlxuIiAiIikNCgkgICAidG90YWw6ICVzLCBib2R5OiAl cywgbW9kZTogJXMiKQ0KICAgKHdpbmRvdy1waXhlbC1oZWlnaHQpICh3aW5kb3ctYm9keS1o ZWlnaHQgbmlsIHQpDQogICAod2luZG93LW1vZGUtbGluZS1oZWlnaHQpKSkNCg0KKGRlZnVu IHNwbGl0LXdpbmRvdy0yICgpDQogIChpbnRlcmFjdGl2ZSkNCiAgKHNwbGl0LXdpbmRvdyBu aWwgLTIpKQ0KDQooZ2xvYmFsLXNldC1rZXkgW2YxXSAnc3BsaXQtd2luZG93LTIpDQoNCihk ZWZ1biB0ZXN0LXBvcHVwICgpDQogIChpbnRlcmFjdGl2ZSkNCjs7ICAgKHNldC1mYWNlLWF0 dHJpYnV0ZSAnbW9kZS1saW5lIG5pbCA6aGVpZ2h0IDIwMCkNCjs7ICAgKHNldC1mYWNlLWF0 dHJpYnV0ZSAnbW9kZS1saW5lLWluYWN0aXZlIG5pbCA6aGVpZ2h0IDIwMCkNCiAgKHNldHEN CiAgIG1vZGUtbGluZS1mb3JtYXQNCiAgIChjb25zIChwcm9wZXJ0aXplICIgIiAnZGlzcGxh eQ0KICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZS1pbWFnZSAiLyogWFBNICovIHN0YXRp YyBjaGFyICogaW1hZ2VbXSA9IHsNClwiMyA2MCAxIDFcIiwNClwiMCBjICMwMGFhZmZcIiwN ClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIw MDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwi LFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5c IjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAw XCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixc blwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIw MDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwi LFxuXCIwMDBcIixcblwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5c IjAwMFwiLFxuXCIwMDBcIiwNClwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixcblwiMDAw XCIsXG5cIjAwMFwiLA0KXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIwMDBcIixc blwiMDAwXCIsDQpcIjAwMFwiLFxuXCIwMDBcIixcblwiMDAwXCIsXG5cIjAwMFwiLFxuXCIw MDBcIg0KfTsiICd4cG0gdCA6YXNjZW50ICdjZW50ZXIpKQ0KCSBtb2RlLWxpbmUtZm9ybWF0 KSkNCiAgKGZvby1tZXNzYWdlIHQpKQ0KDQooZ2xvYmFsLXNldC1rZXkgW2YyXSAndGVzdC1w b3B1cCkNCg== --------------7D5DA8E0DB59F31B82DCFCDF Content-Type: image/png; name="capture_01072020_191510.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="capture_01072020_191510.png" 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 fR4vt8mU4PG4PR45e/bMzTffPGLEiPvuu6+srMzogWD48KtmzMj88qsmf/kiMv1bk7dsjudl 57bzbTfccP3QoUO1P4Ma/cMDjnSXvv767bf2TPtWehynHhcejycxMbGzs1N8S0kL+46OjqSk JJfLlZycrF3LNZlMCQkJ2nrqh4pZrdazJ347asL3+mFaelJTU8MmdHp6r9bj9ddfry1wPVdf HZ8rQ9ddO1JEVq/d9LOfl73++usikpKS8tlnn5lMpquuumr0debf7/nkJsvEa0ePlO5Xd/pB 3Hd5AAPFcPD793+PRzwet8kkHo/b4/FcvHhxyJAhIjJmzJjs7OxNmzZFfyB4/G8Lf/nPq0Tk 60tfuz2ehIQEk8mUkGC6Yey106Zb/up/PPwf//4bo/XUM3To0KNHj0UeR2voNx9tiTn4w857 74+MWnsrMTExLS0tmvH/+7//W3znB33KarWebXnPc9YmAe3+AYmBUaNGBTW+d+zY8cADD1y6 dKk3xba0tLS3t4tIQkLCpEmTzp49e+7cucmTJx85cmTEiBGjRo3qbb1FROT8+Qsdnc6759z6 s5/++Gxr2+XL7YHvJiYm/uXD30swmc62trn741zOqy92eQADyEDwB+3/2h/aZT/xeDo6OkeO HBn0kSgPBC6nKyvr9i+a/nDx0iWXy5OYkJCYlJCcnGwymb41Y8ofW7689957w6ZX748yBz63 nz3tvcI/6rrUG8bqXtE1xGazBc27Foe9PzK6jTf1+jr4rVbrWccOLfXPNPyjiLQcbWqyt/R/ DLhcrtGjR0+YMCFwYHp6usfj6eX9jnHjxgX+OWrUKC3sJ0+e3Jtig1xzzdUikjf/7mtSw19C yJw6WbvH3z/8u/zOnbvKyp7fvfsDEbFaZ//wh0vm3Xtvb3Z5AAPIQPC73a7AyNeOCuJL/ocL 8rPvufvixQuOEydOtZz6wx8+vdj25a/+dUs0JScmJaYMSTl3/kJnZ2f75Y7ExISk5CSP2+N2 e9LTJ01ebP67Hz0+bOiI5JTkBJNpyJAhKUOSExOTWlu/6v1R5uzptjlzbwkcEsf7+v7qxf3m d2tra4/jaLf5tScA4jv1QNoVfs+5vYEDx92YPu7G9D/8Z+ot/RgD8+fPt9vt6enpZ86c8Tf6 /c39kydP9uYefENDg8vlmjFjxsGDB4cOHaq18t9+++3AccI+BmhoolqLX0S+lWkRkZ2/+6D+ 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 SURBVB6/mMTj8QR2BasFv0nE43Z7vFf7vb/nH2XhNptt4oSpMdQ+OTnpt7+tieGDfsOvGn5F hL1GO6MS7XkLEbfb3d7e7r+v7/F4kpKShgwZkpiY6L8p43Q6+z/7rVbrG6/8j/pPHUv/945+ +9m+wJ/pjf6tXorjPf5L5099O7Nb30sDe48/dJcX33mkyWRKSUkZNWpk9j13T8+8+fLly63n zl111dW0+IErQrTB73A4Rl4z3H9DX7Se4E0mt/aFfrfb42sKaE19t9tl6PS/3+Kh+WjLHltd /0wr7rQH1F3aXQ+nU7s0or3ldrtTUlKGDBniv7bvPzPrz3v8mrg80GCI1pQPusEf9JY2sPff 6Q8Ux3v8LccOfLLvjdOn/9Thcl9uu3C53Xms+agM3D3+yLt8YkLCsKFDr712dEJiwtmzrSkp ydqVvr6rD4B4iTb4399XOzzFZBKT78k+k9vjNgV+8U5M2vm+tvO7Pe4PPxqMP9x96eKl68Zc F82YUY7Wb+bPn//b3/527NixycnJw4cPb21tHTZsWFpamvZjMklJSf5v7WttteTk5AG8uz8I u2iLe3O/ra0t8o/ytrX1/MVRjc1m+3ZWmJ6cPv/88x5/kffzzz+PciqGRLPLO52dnZ2d7R3O BJPpxNHEjz/5tC9qAiC+ogr+wK9pGTLYjv5G2/rNR1taW+PQFVC8fO973/On14kTJ6L5SFtb 27lz56Js5k6ePLmjoyP2+sVPDDWJMI/xbeX77dq1K46lhd1ZAn84yOhnQ0W/VL8xuzyAUNG2 +L8B+7PtdzbrvYaPZbbfDa4Z76MMg1H9syIGcL/7BuzyAMLqw5/sHYQGW4oDANDP+M0NAAAU QvADAKAQgh8AAIUQ/AAAKKTbw31r164dqHoAAIB+0C34//Ef/zHsSJF/pQQAAPQFvd8Bq6+v N1hSV0epan2dDwCAb4bs7Owox6ytrQ38k3v8AAAohOAHAEAh/Rr8bZV529LTu//La7R7h9fr //B5y/L02kp7zNNtWe6dkPEP+iucF1g9veHx0sv5DSinb+s5SPS4/cRLvNbLN8Ku+vT0bXmV g3m6fbX971redQTLqwy9AXsFbCe+WejTel4By0FV/X2PP/XpmuzFlpbl6Sfvb5o5Txrz8kQk dXF1tuQ16n9q3Jqmcb2Y6Lg1TVMP5hn+mL3y0MFp2U3VwU826g2Pn17Or1cf17Mxb3lq9Zre 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 Qgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCg EIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAo hOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAK IfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBC CH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQ gh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE 4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh +AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEII fgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCC HwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITg BwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4 AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+ AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIf AACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAH AEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgB AFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4A ABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8A 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 OurKXtw7uzxkftPSCheW52dpYxdtag74eNfi0RduW/MO3zu7vHRCQA0Gga0leccXdpup8PX3 bSlpwSs2YLlZ0+TI3PLy/K0leZua0woLJ+/2veHfTiIL2iW1xZ9mtYrNW85KbcFFWC+OurIX V2mbbeBkteqnFVYslKotm2zN/qLqtpZt8ddyYWm+f0EEFlRold0Tl5Xni/50o1k+vu1Kd756 XjInykqOl5bnR15u3vrsne1frwEjhNvO9ebXrFc6YExjY2N2dnaUI9fW1oqc9v+ZpD9mLMz5 CyfnVdXlD4pjcFbBysKqLZtsItJ8xFq4ssCXp0WbjhRWVJebvXvmkeMOyTJrhw7xvqEddI6f EDFnlVZXzy7LW2VbtUqsK6vLJ2wtKaqqyy/NMueX+w4Xjq0lRS9uvas83yziG1+CAk2vfBER se2Wiupqc/eCwtd/MLKtyvOd66QVVpRqr7RjW7X2l6OurGTrhPJ8szm/vDp/a0lZ74PasbVk iywszxJx9K6gOKs73mydHc28ZZVWV5c6tpa82H2wY+uLuycurKjO0jbQoiMiIvnl1VKSt/v4 3GUV1Wbt7LWkrM74MjTnl1dISdFuWVlRnWWWurKSLVsdWflm0V8vW6v2FvhWozjqysq2lpbm S9eG/uIW68JlFaVmqXM4RMwiWXcVTMgv9Z28ltV594O6shf3zl5Wrb3hqCsr8lVIb3vQWT7h tyu9+YqoeVNR3iaRtMJSg4tRRMwTJzfvPSFiDl8fvfnt+vCW9x35g3eXxqCXkZFx8mRP7XMd cQ5+kayCwi0vdtvlQlrA3nN6o8ONM2fdNXHLJklLk+ZmmZjlrdGEiWli21SUt0nS0tImz11Y UZplFhHH+7ub0worfPXOmm2VIxMnhKtGfnm1iIg46ra+uMXX5BdJmxuxMpHLty7U3jBPnCzN vvOB8PUfjLq3Dku2LivPl627Jy8s99fZnDV7cpyPdCeONzcHnHGUTBwcF0Qcx4+IFPSiAHP+ wsklq4o2iYikpVlXLvM3RtPmFuSbvbNovmvukao6yYrp7Mm6UNvoJWv25C3HI47q2LrbZttk C9wjrbNLxT/ZtEJ/w9W3hTrer/Jd2EpLk8mztaF1e4/MLS31rSBzVml1TFV3RNquDMyXt/IV Wos/lpr0UJ/I85s1MW1V13k/0L/iHvzeRr8j37/JZ5VWV4c7oTY6PAaO93c3W1dWl0pZ3qq9 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 mS95AAAAAElFTkSuQmCC --------------7D5DA8E0DB59F31B82DCFCDF Content-Type: image/png; name="capture_01072020_191636.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="capture_01072020_191636.png" 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 +AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEII fgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCC HwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITg BwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4 AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+ AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIf AACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAH AEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgB AFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4A ABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8A AIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcA QCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEA UAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBAIQQ/AAAKIfgBAFAIwQ8AgEIIfgAA FELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQCMEPAIBCCH4AABRC8AMAoBCCHwAA hRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAUQvADAKAQgh8AAIUQ/AAAKITgBwBA IQQ/AAAKIfgBAFAIwQ8AgEIIfgAAFELwAwCgEIIfAACFEPwAACiE4AcAQCEEPwAACiH4AQBQ CMEPAIBCCH4AABRC8AMAoBCCHwAAhRD8AAAohOAHAEAhBD8AAAoh+AEAUAjBDwCAQgh+AAAU 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 --------------7D5DA8E0DB59F31B82DCFCDF-- From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 13:36:16 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 18:36:16 +0000 Received: from localhost ([127.0.0.1]:49279 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iotiC-0001wA-2z for submit@debbugs.gnu.org; Tue, 07 Jan 2020 13:36:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ioti9-0001vx-3r for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 13:36:14 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52700) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ioti3-0001hw-Lx; Tue, 07 Jan 2020 13:36:07 -0500 Received: from [176.228.60.248] (port=3037 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ioti2-00039P-Cz; Tue, 07 Jan 2020 13:36:07 -0500 Date: Tue, 07 Jan 2020 20:36:17 +0200 Message-Id: <83woa3azby.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: <44ffb147-d782-1f62-0ece-10e096cabf15@gmx.at> (message from martin rudalics on Tue, 7 Jan 2020 19:23:39 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> <831rsbcg4v.fsf@gnu.org> <44ffb147-d782-1f62-0ece-10e096cabf15@gmx.at> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38966@debbugs.gnu.org > From: martin rudalics > Date: Tue, 7 Jan 2020 19:23:39 +0100 > > I attach a new file test-popup-3.el. With emacs -Q load it, type F1, > then F2. After C-x o I can move through the lower window without > seeing any cursor or text line. I also attached two screenshots, one > before C-x o and one after. If you look hard enough, you can spot the > remnants of the scroll bar on the lower window's mode line. Don't you see that the mode lines overlap? That's exactly the sign of us being unprepared for such windows. I hope you didn't mean we should leave that alone and be happy about what we see in this case, yes? From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 13:58:10 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 18:58:10 +0000 Received: from localhost ([127.0.0.1]:49329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iou3O-0002UG-Hc for submit@debbugs.gnu.org; Tue, 07 Jan 2020 13:58:10 -0500 Received: from mout.gmx.net ([212.227.15.19]:44597) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iou3M-0002U3-Lb for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 13:58:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1578423482; bh=HhPkht/FNLxgoDeqY+gT1GI43iAXrTLLtNAf/ebQUeI=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=aozfRWhpaDSItmJw2UilIatEfA0mOYtNcSYMk/uAW5xJQcBB9K3C0WSbSOGVi9DA1 hgngUFDaZJWvy2KMCwZZuQ0P/LBi/tPyClwWzyRM359gj0OtI1VIVpuQP/ReoUcgxL +w2/04UsAjqNUihbIB6IcH32laHFzqYbWa33Yy8I= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.116]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MPXd2-1j2ZJY0H8U-00MaUF; Tue, 07 Jan 2020 19:58:02 +0100 Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row To: Eli Zaretskii References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> <831rsbcg4v.fsf@gnu.org> <44ffb147-d782-1f62-0ece-10e096cabf15@gmx.at> <83woa3azby.fsf@gnu.org> From: martin rudalics Message-ID: Date: Tue, 7 Jan 2020 19:58:02 +0100 MIME-Version: 1.0 In-Reply-To: <83woa3azby.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: de-AT Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:23RFnMvubpXMIuk//K748v0Ize3pX4kV+mlRxszgmqXbAt4MEQy cgyNZaAebXIk4k1wEYsOB5EpaJhO6c/b/1mi+lzGTVdRW0FOiCc9um5gP3ImQJHW3LA1xEY 95HFBzdBXuDE38vwTA4vwC1D4CBlNhLLmonYN9aEmWeJyVaPO67kE7lEO5XWIi0uE/O7ye7 1ULqghRuxcovwYCOUsNsg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:Uu5MyO97Hfc=:/4gG2sC2DR3VvxiL23K1lN UQWIlvirn74Xa5KJJRgpYtY9t8oMlCQXY4FOLVWmKO+Exf3Aif9brnXwn8L1bjK1CgIV3Z5xD hd0aJ94ete4ZlIYmY92IVZwHuuW3cQCnjj9OmUxziEvGT8aJyitygFd3MAetecxEzPHGG2OIH D6kwKgCL84/4X1SLIlfaqNDSSo8CWdXWSIQUc/kxSIZWa4KescJmWiHo1a7v5aNjJBRPBgKLL jxIHi54DLXcsLeA9/rZn96cemsR5hHrnnS5M8EZz2pEPlRk06WxtibfS3zGqyUg7OgI5kjG+5 Zpx5VBBiR8b/m07lrfVdmz/OpkpIcoW63OADXj0BxLDSaIzqy25vdIt/3RPCZ08ldbjvRd2OY OxO/BsgaSoeSQeDhfnyTkmBU7f6JP71d4+z6xfw0tEKE8gZhb5kyV18NbYU5RVKqfquz6+5MG zkwiLMNt/3olh3bjgSv6Dh1Ln5RUD+CcGCuauQ7bTJZPAB1pltaTpWXq4JcZ5RfH4bGnFehNu zgGPeoixPxZLWu6vVBCSgThu+aRrFf86GYWnY3BE3mncJ94Z3U44z1O9mdsgkHeRHEcsQaxL3 RpzapacEZqd8w3MxN/Mh80d5K2Ql/m48zMgSoku1eXycSnyZCJKnBsHFmseJeQxZdV0eJOHxV X/orVgK4ErBepbwCzj6Xv9LbhpI6SOJWqqDUCO2O6Qp8oG/bAPkwH9rY3674reGCbilCsn2eT y4snft6AfgW0RngMapKVJkZWmQgFmhZAsQAdgqVWIp56AbzCygjx8LhfOh8mumqBnc0WlXSzb 3nQ4HLwbRMWBNRObrvW2bTYkzbVaspS9+o5TGbvKwp/zC2cNF1oVRwCo+EGFFBKQlQbxsKVix 3kDml9cDLWEbdAIrXDwOfsBisweeBua7rTSDY4SGAOrvRDFXeV3OFgkGPtvwEAtqvUNhgjZHb HgTJVus0LfqE5mhuE2ff3M+kYyf6RwFfJWCRrQh1sp8RZhsOg64kYTth7UZEJRVoBuX4ynm8T z1RYW7sdLRxsFvUsol374e0LpTtG0J+FJB4YE/c4zTLMeCtzZzA/Fn+ATX1dQqt1+qcVv199W louVNlQjFDamvjoXIJw4MTzIWmMMNSP9g9hM9ettfYgSAS3wRA6gstGIrEGnVVZ9ZZxNayGdr 1kycGsB+PtU8his9HozHGh8rIBhlL3d4w7Zqp8X/M6sHIDhMuLBLgpEl/7wTrbqfpQd/4Dzmi f3uPLlqYrSQRZg9FpfyK3adb6o0uguP7+G1UfYgJcM2mF83tKjYVaBIbHVUs= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Don't you see that the mode lines overlap? That's exactly the sign of > us being unprepared for such windows. I hope you didn't mean we > should leave that alone and be happy about what we see in this case, > yes? Being more humble I'm already happy when Emacs doesn't crash on me in this case (and that you can, hopefully, reproduce the recipe now). Worse comes to worst, I'm positive that one can triple the effect with appropriate header and tab lines' formats. martin From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 07 14:06:11 2020 Received: (at 38966) by debbugs.gnu.org; 7 Jan 2020 19:06:11 +0000 Received: from localhost ([127.0.0.1]:49339 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iouB9-0002hB-IC for submit@debbugs.gnu.org; Tue, 07 Jan 2020 14:06:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:37395) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iouB4-0002gd-U6 for 38966@debbugs.gnu.org; Tue, 07 Jan 2020 14:06:10 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53396) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iouAz-0005Uq-Qt; Tue, 07 Jan 2020 14:06:01 -0500 Received: from [176.228.60.248] (port=4843 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iouAy-000499-Tc; Tue, 07 Jan 2020 14:06:01 -0500 Date: Tue, 07 Jan 2020 21:06:12 +0200 Message-Id: <83tv57axy3.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-reply-to: (message from martin rudalics on Tue, 7 Jan 2020 19:58:02 +0100) Subject: Re: bug#38966: 27.0.60; Assertion failure in set_cursor_from_row References: <497636f5-1728-1e7e-b826-8310e2a6fe13@gmx.at> <83lfqkecc6.fsf@gnu.org> <12ea3c04-249a-96da-8c88-52dcb5ca8b66@gmx.at> <8336cse544.fsf@gnu.org> <83o8vfcl30.fsf@gnu.org> <4bd36f48-089a-df2a-4860-1c50a5a6815e@gmx.at> <831rsbcg4v.fsf@gnu.org> <44ffb147-d782-1f62-0ece-10e096cabf15@gmx.at> <83woa3azby.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38966 Cc: 38966@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38966@debbugs.gnu.org > From: martin rudalics > Date: Tue, 7 Jan 2020 19:58:02 +0100 > > > Don't you see that the mode lines overlap? That's exactly the sign of > > us being unprepared for such windows. I hope you didn't mean we > > should leave that alone and be happy about what we see in this case, > > yes? > > Being more humble I'm already happy when Emacs doesn't crash on me in > this case (and that you can, hopefully, reproduce the recipe now). Sometimes crashing is better than showing corrupted display, IME. Anyway, I think this issue can be safely closed. From unknown Thu Sep 11 13:55:26 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 05 Feb 2020 12:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator