From unknown Sat Jun 21 03:22:07 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#71116 <71116@debbugs.gnu.org> To: bug#71116 <71116@debbugs.gnu.org> Subject: Status: 30.0.50; comp-normalize-valset doesn't sort consistently Reply-To: bug#71116 <71116@debbugs.gnu.org> Date: Sat, 21 Jun 2025 10:22:07 +0000 retitle 71116 30.0.50; comp-normalize-valset doesn't sort consistently reassign 71116 emacs submitter 71116 Daniel Clemente severity 71116 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Wed May 22 09:27:57 2024 Received: (at submit) by debbugs.gnu.org; 22 May 2024 13:27:57 +0000 Received: from localhost ([127.0.0.1]:55962 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9m0b-0002so-43 for submit@debbugs.gnu.org; Wed, 22 May 2024 09:27:57 -0400 Received: from lists.gnu.org ([209.51.188.17]:35620) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9m0Y-0002si-Lq for submit@debbugs.gnu.org; Wed, 22 May 2024 09:27:55 -0400 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 1s9m0S-0003K3-Ip for bug-gnu-emacs@gnu.org; Wed, 22 May 2024 09:27:48 -0400 Received: from mail-vk1-xa2f.google.com ([2607:f8b0:4864:20::a2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s9m0Q-0000DD-RB; Wed, 22 May 2024 09:27:48 -0400 Received: by mail-vk1-xa2f.google.com with SMTP id 71dfb90a1353d-4df32efa5baso1837146e0c.2; Wed, 22 May 2024 06:27:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1716384465; x=1716989265; darn=gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=eCdoPq+YTExZiMHKAykRAT/bJunbB8E/1WjtIrEC4CM=; b=iViDymhdVpVbdq4CbrSsnrgsyjTK/HnFnECFay6HeYLyLKAc0AqBZb+bb596vYZ/cv pHIdnQN1W64sdQnS7F5zjm0+MMKJeyZnLgHyhtDWWsCAcvgtHN1/HZ8H/cpm+nZpEtLd GQGluXOEuIakqCHHWuRaa74rz7/n0c3N1xXkubnLI1JxRLliZGjJScrkg7SgjzVCKBSV 9KkJwwH8YJpFFdEpWBSq4OHM5BnJ1b7lHn/xWDvYPN4mZDsOswgNUn7hKAeMBSlCuA1O snQ7NbcwrR301eTP4W4JsTHsXVx3x7oek20cnhIVQQPKWaKyYaMsWwHHBMKnGzFLa7WE wNNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716384465; x=1716989265; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=eCdoPq+YTExZiMHKAykRAT/bJunbB8E/1WjtIrEC4CM=; b=ZDiHY0vtODBNiTmxdckZEihnHeqRN78qlsAlpixzCL7smVI3eIIpe2FHbGyNB8G1Qf KKgtwFMOA7i/+p1d3ZBXFDEkahmPfwFS1RiPz2mVxE+uE75a3v9CvukQ5vxjo987E/IK RBf/8fyCFdEcIaj94dyQVonO7iWbX7w5s+0EG2YRp+pS2EmuUdrNUuAL9bte8EbLGYrW klzqVcNKxQ4dEvT3X63SC4XPtj2XpTSjDp2uAfgp0h0IV7PZgtVfhOWl1TXLWplTsknL 4mPQXQ1aysvzu8mx+l/+MCkglwcwSw/4+Y6wahVg1KAeJumJKkQYwoXV/L+Vz20VzLtY 8FRg== X-Gm-Message-State: AOJu0YzPWMkDexDzd7NxiWMwmjaI5lXxQIy0N87NmXHSPd4gAdIy8mEB hbSDUnfprgBlpqAe7zEr4Je+6vMSFz3TkN5lBU71FfZ0tYoR4if3hL6Rkou9k3ilJu4iahDqDBP CO6GN9r1+igXLgA8UNfHKcjLbTna4+zF2 X-Google-Smtp-Source: AGHT+IEGtf6nn+vw4fYMJyuqOh1IqUkerYMsnQpLxZMUb1ZXkK/pDYHtttsxRJA068j1WxQgWXm7iNfDsGY9INFlpNk= X-Received: by 2002:a05:6122:9aa:b0:4df:235b:8ba1 with SMTP id 71dfb90a1353d-4e218522418mr1928345e0c.7.1716384464675; Wed, 22 May 2024 06:27:44 -0700 (PDT) MIME-Version: 1.0 From: Daniel Clemente Date: Wed, 22 May 2024 13:27:15 +0000 Message-ID: Subject: 30.0.50; comp-normalize-valset doesn't sort consistently To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary="00000000000050aa6c06190ae6f5" Received-SPF: pass client-ip=2607:f8b0:4864:20::a2f; envelope-from=n142857@gmail.com; helo=mail-vk1-xa2f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit Cc: acorallo@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: -2.1 (--) --00000000000050aa6c06190ae6f5 Content-Type: text/plain; charset="UTF-8" Current code from comp-cstr.el: (defun comp-normalize-valset (valset) "Sort and remove duplicates from VALSET then return it." (cl-sort (cl-remove-duplicates valset :test #'eq) (lambda (x y) (cond ((and (symbolp x) (symbolp y)) (string< x y)) ((and (symbolp x) (not (symbolp y))) t) ((and (not (symbolp x)) (symbolp y)) nil) ((or (consp x) (consp y) nil)) (t (< (sxhash-equal x) (sxhash-equal y))))))) This part: ((or (consp x) (consp y) nil)) Seems like a typo; as if this was intended: ((or (consp x) (consp y)) nil) In practice, it means it's not sorting well. The presence of a cons can even change how the other elements are sorted: ;; This produces: ((a . 1) 2 3) (comp-normalize-valset '( 2 3 (a . 1) )) ;; This produces: (2 3 (a . 1)) (comp-normalize-valset '( (a . 1) 2 3 )) ;; This produces: (3 (a . 1) 2) (comp-normalize-valset '( 2 (a . 1) 3 )) Since all three examples use a list with the same elements, I would expect the same result after sorting: a sorted list (by some definition of sorted). Otherwise the function documentation must be adjusted. I'm just reporting this because I was reading new code and found this part hard to understand. I'm not familiar with the comp-cstr.el code or with how this affects native compilation, or whether there's any bug. My example doesn't represent how the actual code is used. For context, the original intention was to avoid comparing conses with sxhash-equal. https://lists.gnu.org/archive/html/emacs-devel/2024-02/msg00406.html --00000000000050aa6c06190ae6f5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Current code from comp-cstr.el:

(defun comp-= normalize-valset (valset)
=C2=A0 "Sort and remove duplicates from V= ALSET then return it."
=C2=A0 (cl-sort (cl-remove-duplicates valset= :test #'eq)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(lambda (x y)<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(cond
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((and (symbolp x) (symbolp y))
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(string< x y))
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((and (symbolp x) (not (symbo= lp y)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0t)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((and (not (symbolp x)) (symb= olp y))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nil)
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((or (consp x) (consp y)=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nil)= )
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (t
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(< (sxhash-equal x)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (sxhash-equal y))))= )))


This part:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 ((or (consp x) (consp y)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0nil))

Seems like a typo; as if this was i= ntended:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((or (consp x)= (consp y))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0nil)


In practice, it means it's not sorting well. = The presence of a cons can even change how the other elements are sorted:
;; This produces: ((a . 1) 2 3)
(comp-normalize-valset '(
= =C2=A0 2
=C2=A0 3
=C2=A0 (a . 1)
))

;; This produces: (2 3 = (a . 1))
(comp-normalize-valset '(
=C2=A0 (a . 1)
=C2=A0 2
= =C2=A0 3
))

;; This produces: (3 (a . 1) 2)
(comp-normalize-va= lset '(
=C2=A0 2
=C2=A0 (a . 1)
=C2=A0 3
))

Since al= l three examples use a list with the same elements, I would expect the same= result after sorting: a sorted list (by some definition of sorted). Otherw= ise the function documentation must be adjusted.

I'm just report= ing this because I was reading new code and found this part hard to underst= and. I'm not familiar with the comp-cstr.el code or with how this affec= ts native compilation, or whether there's any bug. My example doesn'= ;t represent how the actual code is used.

For context, the original= intention was to avoid comparing conses with sxhash-equal. https://l= ists.gnu.org/archive/html/emacs-devel/2024-02/msg00406.html
--00000000000050aa6c06190ae6f5-- From debbugs-submit-bounces@debbugs.gnu.org Wed May 22 15:11:07 2024 Received: (at submit) by debbugs.gnu.org; 22 May 2024 19:11:08 +0000 Received: from localhost ([127.0.0.1]:57792 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9rMh-0000qZ-JQ for submit@debbugs.gnu.org; Wed, 22 May 2024 15:11:07 -0400 Received: from lists.gnu.org ([209.51.188.17]:58506) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9rMg-0000qT-7r for submit@debbugs.gnu.org; Wed, 22 May 2024 15:11:06 -0400 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 1s9rMZ-0004b0-Qy for bug-gnu-emacs@gnu.org; Wed, 22 May 2024 15:10:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s9rMZ-0004Vr-Hg; Wed, 22 May 2024 15:10:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=SN5DPguUFbUvU+O+lKDvVP7ygeesF/J8Z+2e2pt7coE=; b=oHh0TBCdJ1qN/W5piZ2m C6v70jbJm9aKUynsipZNlspBTJldHx81WdzcZOQPeHaUEv8oCWZRBLoQYaYUPLoppq0o5fNwO2gzE bkeMxKB37COY6vBLiVzWLgulMvS/bDCX32CWURvGkBZzvzv6aqWuSwiNxm3AuRyqYSvRoafw+h227 LmVHfX107c6GyD/WRDELsgQv7ZkBLH3kbPQYjgcXWkG7ghT46Burf39hzbSDYw1F9GV9rv3VBFh6j 0H3hEwM+4Fj7SabSlKWxGv53jsf/gJzmc/wiAyvlPoYfmKLtyhPBRzKvfKj3wFmOcVA2RcZzBZQNb Rg7coWrC+TpWqQ==; Received: from acorallo by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1s9rMZ-0000Lj-8w; Wed, 22 May 2024 15:10:59 -0400 From: Andrea Corallo To: Daniel Clemente Subject: Re: 30.0.50; comp-normalize-valset doesn't sort consistently In-Reply-To: (Daniel Clemente's message of "Wed, 22 May 2024 13:27:15 +0000") References: Date: Wed, 22 May 2024 15:10:59 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@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 (---) Daniel Clemente writes: > Current code from comp-cstr.el: > > (defun comp-normalize-valset (valset) > "Sort and remove duplicates from VALSET then return it." > (cl-sort (cl-remove-duplicates valset :test #'eq) > (lambda (x y) > (cond > ((and (symbolp x) (symbolp y)) > (string< x y)) > ((and (symbolp x) (not (symbolp y))) > t) > ((and (not (symbolp x)) (symbolp y)) > nil) > ((or (consp x) (consp y) > nil)) > (t > (< (sxhash-equal x) > (sxhash-equal y))))))) > > This part: > ((or (consp x) (consp y) > nil)) > > Seems like a typo; as if this was intended: > ((or (consp x) (consp y)) > nil) > > In practice, it means it's not sorting well. The presence of a cons can even change how the other elements are sorted: > > ;; This produces: ((a . 1) 2 3) > (comp-normalize-valset '( > 2 > 3 > (a . 1) > )) > > ;; This produces: (2 3 (a . 1)) > (comp-normalize-valset '( > (a . 1) > 2 > 3 > )) > > ;; This produces: (3 (a . 1) 2) > (comp-normalize-valset '( > 2 > (a . 1) > 3 > )) > > Since all three examples use a list with the same elements, I would expect the same result after sorting: a sorted list > (by some definition of sorted). Otherwise the function documentation must be adjusted. > > I'm just reporting this because I was reading new code and found this part hard to understand. I'm not familiar with the > comp-cstr.el code or with how this affects native compilation, or whether there's any bug. My example doesn't represent > how the actual code is used. > > For context, the original intention was to avoid comparing conses with sxhash-equal. > https://lists.gnu.org/archive/html/emacs-devel/2024-02/msg00406.html Yes this is my todo list, I think for how the code is now sorting should not even be necessary anymore, so I want to give it a try at remove it entirely. Andrea From debbugs-submit-bounces@debbugs.gnu.org Mon May 27 14:50:35 2024 Received: (at 71116-done) by debbugs.gnu.org; 27 May 2024 18:50:35 +0000 Received: from localhost ([127.0.0.1]:45280 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBfQZ-0001Z0-49 for submit@debbugs.gnu.org; Mon, 27 May 2024 14:50:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58280) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBfQY-0001Yg-0t for 71116-done@debbugs.gnu.org; Mon, 27 May 2024 14:50:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sBfQJ-0004NM-Mc; Mon, 27 May 2024 14:50:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=ayqtIqoFkmlnboATd2JBy7+qnrAEKDcrD/lJ6/XE3I4=; b=lTYr3bSnOU1jKJDWZYSV /+vM1+T5KFYLhf5il1H1+G6kIu4Ix5rL19BIXHO4qiQChb5xxf4Lv0Xz9Pj16620cUZZmZ2aIMCHZ s9S5aCkY1G9eVRKOUwep21y2GSSBDUsmG1E7BYbiGF1Ei2fnrEFN1uwU/69yWd742VE6k3aldl0n4 6/VAu5oqbk1omiJ7H80tSMQ95RHqEs6TrZS5K3ClkK8fUo9+NDO3SGoD1JExX8Ydm26AH4ttXjQAY De0avHdJd290jkXNbSu+yCU3VTrNfINMLK3Ki86qLcp+qU12jw3IiJCm5jlnkTRr+66hBaid1sIo3 nsXGewoDI4/g9w==; Received: from acorallo by fencepost.gnu.org with local (Exim 4.90_1) (envelope-from ) id 1sBfQI-0000YM-Ks; Mon, 27 May 2024 14:50:18 -0400 From: Andrea Corallo To: Daniel Clemente Subject: Re: bug#71116: 30.0.50; comp-normalize-valset doesn't sort consistently In-Reply-To: (Andrea Corallo's message of "Wed, 22 May 2024 15:10:59 -0400") References: Date: Mon, 27 May 2024 14:50:18 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 71116-done Cc: 71116-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 (---) Andrea Corallo writes: > Daniel Clemente writes: > >> Current code from comp-cstr.el: >> >> (defun comp-normalize-valset (valset) >> "Sort and remove duplicates from VALSET then return it." >> (cl-sort (cl-remove-duplicates valset :test #'eq) >> (lambda (x y) >> (cond >> ((and (symbolp x) (symbolp y)) >> (string< x y)) >> ((and (symbolp x) (not (symbolp y))) >> t) >> ((and (not (symbolp x)) (symbolp y)) >> nil) >> ((or (consp x) (consp y) >> nil)) >> (t >> (< (sxhash-equal x) >> (sxhash-equal y))))))) >> >> This part: >> ((or (consp x) (consp y) >> nil)) >> >> Seems like a typo; as if this was intended: >> ((or (consp x) (consp y)) >> nil) >> >> In practice, it means it's not sorting well. The presence of a cons can even change how the other elements are sorted: >> >> ;; This produces: ((a . 1) 2 3) >> (comp-normalize-valset '( >> 2 >> 3 >> (a . 1) >> )) >> >> ;; This produces: (2 3 (a . 1)) >> (comp-normalize-valset '( >> (a . 1) >> 2 >> 3 >> )) >> >> ;; This produces: (3 (a . 1) 2) >> (comp-normalize-valset '( >> 2 >> (a . 1) >> 3 >> )) >> >> Since all three examples use a list with the same elements, I would expect the same result after sorting: a sorted list >> (by some definition of sorted). Otherwise the function documentation must be adjusted. >> >> I'm just reporting this because I was reading new code and found this part hard to understand. I'm not familiar with the >> comp-cstr.el code or with how this affects native compilation, or whether there's any bug. My example doesn't represent >> how the actual code is used. >> >> For context, the original intention was to avoid comparing conses with sxhash-equal. >> https://lists.gnu.org/archive/html/emacs-devel/2024-02/msg00406.html > > Yes this is my todo list, I think for how the code is now sorting should > not even be necessary anymore, so I want to give it a try at remove it > entirely. Right, after thinking about I believe keeping some sorting is beneficial performance-wise to have good cache hit rate. With 509e7f877ba 'comp-normalize-valset' sort by type and within each type it sorts only (alphabetically) strings and symbols, so we don't rely anymore on 'sxhash-equal'. Closing this then, happy to reopen if necessary. Thanks! Andrea From unknown Sat Jun 21 03:22:07 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 25 Jun 2024 11: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