From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 23997 invoked from network); 23 Sep 2022 18:31:01 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 23 Sep 2022 18:31:01 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1663957862; b=cvQ5BdUhNQJhWagEZq96Evc48nRnIXah1sUbsCKK11b7gimwyfOICBs+S1zrlQR2bafIMKrUJR 7KqP450fc18IcUdPbp0+bexThj4mpGKOxFfEalNFJFM2Os5wL7ZvhXTluiCDic/TE+3osSllNn ByN40Mtz/A7hN5dRHZCLXonGqT0xnl55v9JkLZA9uZsVO3WvOcIsHPIlprKJNvCrYpq/Szrd4K UjhgqD+geUyh3IzzAlh0TbcfVYRkIZBjWv7OdRS+bJ6J2PUwj7zAujXatRra/LavwfwCA5TS5I J89y653RUi1BeE0xbFETt9dBqYBHc+6yi8oDlPhv5kdI1Q==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mslow1.mail.gandi.net) smtp.remote-ip=217.70.178.240; dmarc=none header.from=chazelas.org; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1663957862; bh=KiK1kL07Ux6FwJdtocAkgQuDiHSY34c6V7marf/Zgs0=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:MIME-Version:Message-ID:Subject:To:From:Date: DKIM-Signature; b=bv4hGUFasTbWy4eL++tYB/bPLnLFdNZZRgv6uQuK9o++oq5j8o6oGGDO1+tx3fzzzswMH6NlIU /p0hebZ6kzC0tOFsMnavCK+7Mz/qm3Av89ghOGSWeHYecl3VAJQBBVH0Gyhkz4rNSa37U2Xt2R OEtLQUQiuqbLwS3MFVEtWHO/tuPP5vaNWmlnfaRlX6EyRRRAnkj0AP0+pXs5D1TLgYMZxpdzlN /ZooahlVUYd7tvYu25aricQvx+8X++5zxmiXQw4cgmyxzGSGoC+A2QMHgktV0jZ2+E1TdFtIpb bK+MrfCU56SzN7M1nc9HQ1oNAHmKc575gKg9LE2Bm8IZ6w==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:MIME-Version:Message-ID: Subject:To:From:Date:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=xJ/AHYieK9yYhokzHaa8w3UAHle5XBdeVCvwM7+FwVE=; b=gR8ZaqHxRynN1qcZFiRaGjqjzL 6fyncxpOrkAuF/FFxxGW5fkovLpQBe8XAV0zwRyVmZ0m/pFI3jeWuW0KmtQfATjyMN4nlrXSxTU32 vB74trxFe0l/zUPy3b+RPVupMfv94qXHfUAyYNAW9WuWy8M+g4JwtOJtiH1UbhMTSIU9WIbhjzd16 yypwIvjAVRS1oXYlwxtFxlDCyW8m8DFvs3vkff55dsV6cibMQsypgq6SXKSyKLxrB8z95q0gws7ex uHQSv1wNyBl5clXzg0AVPPzT+t3u16Btw2KIt6lCMqsLewB+1hbaTn3URExtIWViGQeDQXIr1T7kA g2XVqZxA==; Received: from authenticated user by zero.zsh.org with local id 1obnS1-000P9X-4E; Fri, 23 Sep 2022 18:31:01 +0000 Authentication-Results: zsh.org; iprev=pass (mslow1.mail.gandi.net) smtp.remote-ip=217.70.178.240; dmarc=none header.from=chazelas.org; arc=none Received: from mslow1.mail.gandi.net ([217.70.178.240]:35789) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1obgTZ-000Dvq-1V; Fri, 23 Sep 2022 11:04:10 +0000 Received: from relay11.mail.gandi.net (unknown [IPv6:2001:4b98:dc4:8::231]) by mslow1.mail.gandi.net (Postfix) with ESMTP id A58CCC2479 for ; Fri, 23 Sep 2022 10:54:17 +0000 (UTC) Received: (Authenticated sender: stephane@chazelas.org) by mail.gandi.net (Postfix) with ESMTPSA id 19B2410000D for ; Fri, 23 Sep 2022 10:54:15 +0000 (UTC) Date: Fri, 23 Sep 2022 11:54:14 +0100 From: Stephane Chazelas To: Zsh hackers list Subject: [bug] busy loop and memory exhaustion on {x..$'\80'} with nomultibyte Message-ID: <20220923105414.mrvkpoxsejwtu7rz@chazelas.org> Mail-Followup-To: Zsh hackers list MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Validation-by: kb@spambri.de X-Seq: 50663 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: $ (limit cputime 10; TIMEFMT='%MMiB %U user %S sys'; time zsh +o multibyte -c ": {z..$'\x80'}") 3980MiB 8.84s user 1.40s sys {$'\x80'..$'\xff} doesn't have the problem, but the expansion is: $ zsh +o multibyte -c "printf %s {$'\x80'..$'\xfe'}" | hexdump -C 00000000 5c 4d 2d 40 5c 4d 2d 41 5c 4d 2d 42 5c 4d 2d 43 |\M-@\M-A\M-B\M-C| 00000010 5c 4d 2d 44 5c 4d 2d 45 5c 4d 2d 46 5c 4d 2d 47 |\M-D\M-E\M-F\M-G| 00000020 5c 4d 2d 48 5c 4d 2d 49 5c 4d 2d 4a 5c 4d 2d 4b |\M-H\M-I\M-J\M-K| 00000030 5c 4d 2d 4c 5c 4d 2d 4d 5c 4d 2d 4e 5c 4d 2d 4f |\M-L\M-M\M-N\M-O| 00000040 5c 4d 2d 50 5c 4d 2d 51 5c 4d 2d 52 5c 4d 2d 53 |\M-P\M-Q\M-R\M-S| 00000050 5c 4d 2d 54 5c 4d 2d 55 5c 4d 2d 56 5c 4d 2d 57 |\M-T\M-U\M-V\M-W| 00000060 5c 4d 2d 58 5c 4d 2d 59 5c 4d 2d 5a 5c 4d 2d 5b |\M-X\M-Y\M-Z\M-[| 00000070 5c 4d 2d 5c 5c 4d 2d 5d 5c 4d 2d 5e 5c 4d 2d 5f |\M-\\M-]\M-^\M-_| 00000080 5c 4d 2d 60 5c 4d 2d 61 5c 4d 2d 62 5c 4d 2d 63 |\M-`\M-a\M-b\M-c| 00000090 5c 4d 2d 64 5c 4d 2d 65 5c 4d 2d 66 5c 4d 2d 67 |\M-d\M-e\M-f\M-g| 000000a0 5c 4d 2d 68 5c 4d 2d 69 5c 4d 2d 6a 5c 4d 2d 6b |\M-h\M-i\M-j\M-k| 000000b0 5c 4d 2d 6c 5c 4d 2d 6d 5c 4d 2d 6e 5c 4d 2d 6f |\M-l\M-m\M-n\M-o| 000000c0 5c 4d 2d 70 5c 4d 2d 71 5c 4d 2d 72 5c 4d 2d 73 |\M-p\M-q\M-r\M-s| 000000d0 5c 4d 2d 74 5c 4d 2d 75 5c 4d 2d 76 5c 4d 2d 77 |\M-t\M-u\M-v\M-w| 000000e0 5c 4d 2d 78 5c 4d 2d 79 5c 4d 2d 7a 5c 4d 2d 7b |\M-x\M-y\M-z\M-{| 000000f0 5c 4d 2d 7c 5c 4d 2d 7d 5c 4d 2d 7e 5c 4d 2d 5e |\M-|\M-}\M-~\M-^| 00000100 3f 5e 00 5e 01 5e 02 5e 03 5e 04 5e 05 5e 06 5e |?^.^.^.^.^.^.^.^| 00000110 07 5e 08 5e 09 5e 0a 5e 0b 5e 0c 5e 0d 5e 0e 5e |.^.^.^.^.^.^.^.^| 00000120 0f 5e 10 5e 11 5e 12 5e 13 5e 14 5e 15 5e 16 5e |.^.^.^.^.^.^.^.^| 00000130 17 5e 18 5e 19 5e 1a 5e 1b 5e 1c 5e 1d 5e 1e 5e |.^.^.^.^.^.^.^.^| 00000140 1f 5e 20 5e 21 5e 22 5e 23 5e 24 5e 25 5e 26 5e |.^ ^!^"^#^$^%^&^| 00000150 27 5e 28 5e 29 5e 2a 5e 2b 5e 2c 5e 2d 5e 2e 5e |'^(^)^*^+^,^-^.^| 00000160 2f 5e 30 5e 31 5e 32 5e 33 5e 34 5e 35 5e 36 5e |/^0^1^2^3^4^5^6^| 00000170 37 5e 38 5e 39 5e 3a 5e 3b 5e 3c 5e 3d 5e 3e |7^8^9^:^;^<^=^>| 0000017f With {$'\x80'..$'\xff'}, we get: $ zsh +o multibyte -c "printf %s {$'\x80'..$'\xff'}" | hd 00000000 7b 80 2e 2e ff 7d |{....}| 00000006 One can always use: () {set -o localoption +o multibyte; bytes=(${(#)@}); } {0..255} and then printf %s $^bytes[##x+1,0x81] To get byte values from x to 0x80 in a {x..y} fashion as a work around (BTW, the fact that it's MiB above instead of documented KiB on systems other than Darwin/macos is a separate bug that has already been reported at least a couple of times in the past). -- Stephane