From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Robert Pluim Newsgroups: gmane.emacs.bugs Subject: bug#62009: 29.0.60; Emacs crashes on setf symbol-name Date: Fri, 10 Mar 2023 12:30:48 +0100 Message-ID: <87fsacx2qf.fsf@gmail.com> References: <87o7p5of4n.fsf@daniel-mendler.de> <871qm01s6n.fsf@web.de> <9fcf05e8-506c-6566-e214-2ecf3194b85e@daniel-mendler.de> <83bkl45ul4.fsf@gnu.org> <87v8j9zl3i.fsf@posteo.net> <83a60l13p2.fsf@gnu.org> <16ecbe9ea8ba9d39d058@heytings.org> <16ecbe9ea85b22d008fd@heytings.org> <43460d2c-ba80-0f2f-656c-ef0aca5667b5@daniel-mendler.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5417"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Philip Kaludercic , michael_heerdegen@web.de, Gregory Heytings , monnier@iro.umontreal.ca, 62009@debbugs.gnu.org, Eli Zaretskii , Augusto Stoffel To: Daniel Mendler Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 10 12:31:12 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1paaxq-0001Bq-Dm for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 10 Mar 2023 12:31:10 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1paaxj-00083r-Qx; Fri, 10 Mar 2023 06:31:03 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1paaxi-00083K-Tt for bug-gnu-emacs@gnu.org; Fri, 10 Mar 2023 06:31:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1paaxi-000288-Ll for bug-gnu-emacs@gnu.org; Fri, 10 Mar 2023 06:31:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1paaxi-0004CV-HY for bug-gnu-emacs@gnu.org; Fri, 10 Mar 2023 06:31:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 10 Mar 2023 11:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62009 X-GNU-PR-Package: emacs Original-Received: via spool by 62009-submit@debbugs.gnu.org id=B62009.167844785916136 (code B ref 62009); Fri, 10 Mar 2023 11:31:02 +0000 Original-Received: (at 62009) by debbugs.gnu.org; 10 Mar 2023 11:30:59 +0000 Original-Received: from localhost ([127.0.0.1]:53846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paaxf-0004CB-3s for submit@debbugs.gnu.org; Fri, 10 Mar 2023 06:30:59 -0500 Original-Received: from mail-wr1-f41.google.com ([209.85.221.41]:47082) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1paaxb-0004Bw-RF for 62009@debbugs.gnu.org; Fri, 10 Mar 2023 06:30:58 -0500 Original-Received: by mail-wr1-f41.google.com with SMTP id bw19so4702419wrb.13 for <62009@debbugs.gnu.org>; Fri, 10 Mar 2023 03:30:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678447850; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=LKRB7/twUIIQLZCOIZWS0GZt6C1dC5i/lt9hkVdcGj0=; b=gK2kx2mqo/1KSeVa5iygzuLkJ9IAzDTVVT7qemg51/aPbce09uuOOk0EcTJW8vVk41 PMiCOhM5Ysk3r5TvUAUVRYMYM8Wmd/R6haEi10ha/m5CAyVjgZoXw5LYPke13Jwi2cHh hRTs6X6a4b2wohjWkFUiozhWyFkBJnWQa83HzvG20vUKzU7CukZzQdmG7Vrr+R5flARf LcZvrkN/tbenRdXBUz9mcSAyGqk5CNLiHCtuaDjgBL6Rial/oMKNIS/HHdj63KBLrx0I Qry3FXXLoH5JD4OHlMmX6zQKID9OVLjqnj0SI7XGiT3+UrSgKAyVO+kGioMQXGqafafj WwEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678447850; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LKRB7/twUIIQLZCOIZWS0GZt6C1dC5i/lt9hkVdcGj0=; b=dIfX7LS6+Lb17WO3f0/ZFUqgMzRfD/h5vSBhJmgsAuYenwnl69akXCsdMaxof/4TKI L2I7uvQxlYmhtioktUhum+eagxZ97yUTxWoCBeaJOpLm0Al7+dqKCoNeAfVmEFHzlrtk y8quta36Sgll4aHFNqZPgze8paYtzdP5rcMOG/nmgS2yDWDjrlJfLQZUFeOU64dN4Rtm RkRGzwrjXoLYDDJcbY3mxVUiBZh+4rObU1VohVNyC17Czc8smcUYe2MURn99Da2XHy48 wWkou0TDds/J6bxMjkKGR2cl5tPYK/UMUVtZk09EZfV6Egynz+2QyLY/LJWufAojwsl+ Se+A== X-Gm-Message-State: AO0yUKVurs6sjMQIn7EssNYU/CyQI5mgm2WX8Uk3CN0lSmWQ1Pd5epxO rOxKDe9qopL0p3t8owvakHg= X-Google-Smtp-Source: AK7set/VQkm3DJR4ODbo2cYAgMpoth0lLVKXSbQjXAShElG9BNBZS9h6Z+i0HL8lDKJAhWO1agWoRQ== X-Received: by 2002:a5d:66ce:0:b0:2c7:8f73:7700 with SMTP id k14-20020a5d66ce000000b002c78f737700mr16785711wrw.39.1678447849607; Fri, 10 Mar 2023 03:30:49 -0800 (PST) Original-Received: from rltb ([82.66.8.55]) by smtp.gmail.com with ESMTPSA id y12-20020adffa4c000000b002c5706f7c6dsm1937152wrr.94.2023.03.10.03.30.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Mar 2023 03:30:49 -0800 (PST) In-Reply-To: <43460d2c-ba80-0f2f-656c-ef0aca5667b5@daniel-mendler.de> (Daniel Mendler's message of "Fri, 10 Mar 2023 12:09:59 +0100") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:257671 Archived-At: >>>>> On Fri, 10 Mar 2023 12:09:59 +0100, Daniel Mendler said: Daniel> One could check if the string is located in read-only memory. Or one Daniel> could add a flag bit to the string data structure (and possibly to other Daniel> data structures too). Freezing data structures such that they become Daniel> read-only is a generally useful feature. There won't be any performance Daniel> overhead of the check since a branch not taken is fast thanks to the Daniel> branch predictor. We already have such a flag: /* Number of characters in string; MSB is used as the mark bit. */ ptrdiff_t size; /* If nonnegative, number of bytes in the string (which is multibyte). If negative, the string is unibyte: -1 for data normally allocated -2 for data in rodata (C string constants) -3 for data that must be immovable (used for bytecode) */ ptrdiff_t size_byte; Try this: diff --git a/src/lisp.h b/src/lisp.h index 1276285e2f2..80bbb047824 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1685,6 +1685,8 @@ SREF (Lisp_Object string, ptrdiff_t index) INLINE void SSET (Lisp_Object string, ptrdiff_t index, unsigned char new) { + if (XSTRING (string)->u.s.size_byte == -2) + Fsignal (Qsetting_constant, string); SDATA (string)[index] = new; } INLINE ptrdiff_t Robert --