X-Loop: help-debbugs@HIDDEN Subject: bug#77613: grep-3.11.69-a4628 on GNU/Hurd Resent-From: Bruno Haible <bruno@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-grep@HIDDEN Resent-Date: Mon, 07 Apr 2025 17:34:02 +0000 Resent-Message-ID: <handler.77613.B.17440472151368 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 77613 X-GNU-PR-Package: grep X-GNU-PR-Keywords: To: 77613 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-grep@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.17440472151368 (code B ref -1); Mon, 07 Apr 2025 17:34:02 +0000 Received: (at submit) by debbugs.gnu.org; 7 Apr 2025 17:33:35 +0000 Received: from localhost ([127.0.0.1]:56696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u1qLm-0000Lx-ES for submit <at> debbugs.gnu.org; Mon, 07 Apr 2025 13:33:35 -0400 Received: from lists.gnu.org ([2001:470:142::17]:40022) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <bruno@HIDDEN>) id 1u1qLi-0000L7-Ch for submit <at> debbugs.gnu.org; Mon, 07 Apr 2025 13:33:31 -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 <bruno@HIDDEN>) id 1u1qLL-0006fg-86 for bug-grep@HIDDEN; Mon, 07 Apr 2025 13:33:09 -0400 Received: from mo4-p00-ob.smtp.rzone.de ([85.215.255.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <bruno@HIDDEN>) id 1u1qLH-0001PZ-W0 for bug-grep@HIDDEN; Mon, 07 Apr 2025 13:33:06 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1744047180; cv=none; d=strato.com; s=strato-dkim-0002; b=R3VR2kW9YVn0NPVpK7cVbeBC8DRaJ/F4ZMPhtEO8fOvG/8dZT1gqITLXg0XRh2YBPs pl3a4R19DUDcN0Niy7C3jjGb7mNZszGYXOt85iU89F7IDhGo+tiZDSqe/2MESCaSlPJ6 1ZLvCBWGv7OjBhPLVZGzm/n4Z7oGwrgenNGX0INEsjscIx9wAQk0667sFg2DZRD7pQ0j oWzofGG4sjuCv3bKm4L3JBaMhuY65sLiQJUInua+IhBLfkaUlqFjnQQHqgJd5gn/DT63 S3hOmJBYYrk1pKeFygTX3ndc6kINmCuVipflVS+/eHYnePTl8i2uxreHU8SwbjOi9e0e ZICA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744047180; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:To:From:Cc:Date:From: Subject:Sender; bh=dKuQjinzWhxJ6lsh0c6oiAFxVlwhLkGRBFqEPFmAHpQ=; b=sdQbsuHXMQbaXH7bz+z/NSh0GEeh0j0s+y86yBt9ZHUetyY+4JMPTc+X3JxkdUuYbu MwXjE3cnqpiVk7kM/I0q1Uti0Eq5IGHIvKRj3ucrLiV27cOIpUR3zexG4sTGq+qyJ8rA woGxe+0vuUiCpTew30iP42z8HtJjhb0gkQqVCMuitwT+PdNzawf/dlMqb4CCocYaC4Vz sf79Bv0lpAuPF9ZefD4JW/8L2HXztWeU1L59UDqCQ4SCTw4f110uSCNQHHmkwGEFRDFX tIqgXGh+Q7SOXtMiJn7ir2N/EXdIZwJz4M+wcZ1SEO7YyN0KokYVR6eW9+vI/pEewWw1 Fp0g== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744047180; s=strato-dkim-0002; d=clisp.org; h=References:In-Reply-To:Message-ID:Date:Subject:To:From:Cc:Date:From: Subject:Sender; bh=dKuQjinzWhxJ6lsh0c6oiAFxVlwhLkGRBFqEPFmAHpQ=; b=NUaQXI3dkcv/578dQ80ARihBryMX4sFxpbvAhMHuE+cn5cq3/uEGba/QKAAxZCCbfi QwjNAX7nu9u+NJrQnnlWZ2Pp2KoAWmlnSs7zBjohnDYsAiX6zw+Z8eF1PG7e+cB3kKoL HNYrrWcVVaQCsL1GQiyeU5QXEtNpmLX+5lYfD2ehytnDAGi6qd6oYeFCNQBP9796UHNO xoMr/OH7pqzigOUyqDxxBF9M3CMg4mjLxAa0UlQ6j4zK1DySi7pz8tF8tsOVYrBOOlrL WnQuunnPkhy741oUszavCt+BRuydf0ntKTfcvCURaacpgNqoPT6WrXHDnWd2LvC0FE9m Fv6g== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744047180; s=strato-dkim-0003; d=clisp.org; h=References:In-Reply-To:Message-ID:Date:Subject:To:From:Cc:Date:From: Subject:Sender; bh=dKuQjinzWhxJ6lsh0c6oiAFxVlwhLkGRBFqEPFmAHpQ=; b=SOnSMHe9YBlUSYid5c+0U2ebsp0PAKDXDqTOtD2hSuhzSTJhmkos8mjqj6l3aJKakz DkUwCR36djwjZvwQMwBQ== X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlLnY4jECd2hdUURIbZgL8PX2QiTuZ3cdB8X/nqmiYFWMbvteGGfKaAeIFhoa2LeU=" Received: from nimes.localnet by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id N7dcf8137HX0OHR (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 7 Apr 2025 19:33:00 +0200 (CEST) From: Bruno Haible <bruno@HIDDEN> Date: Mon, 07 Apr 2025 19:33:00 +0200 Message-ID: <3353032.JoGBPyJhv8@nimes> Organization: GNU In-Reply-To: <m2r024u0pj.fsf@HIDDEN> References: <m2r024u0pj.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart2434568.3c9HiEOlIg" Content-Transfer-Encoding: 7Bit Received-SPF: none client-ip=85.215.255.23; envelope-from=bruno@HIDDEN; helo=mo4-p00-ob.smtp.rzone.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --nextPart2434568.3c9HiEOlIg Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" On - GNU/Hurd x86_64 from 2024, - GNU/Hurd i386 from 2023, I see a test hang: hash-collision-perf. On GNU/Hurd x86_64: When I interrupted the build, the file 'in' has 5120000 lines, and find attached the log file of this test. As you can see, the value of small_ms stays 0 even for larger files. By running $ date; LC_ALL=C ../../src/grep --file=in empty; date I can see that the execution times grow like this: 640000 0.3 sec 1280000 0.9 sec 2560000 1.5 sec 5120000 > 60 sec On GNU/Hurd i386, it's similar. Here it's when the file 'in' has 40960000 lines, that the grep execution hangs. Find attached the last stack trace I was able to obtain before it hung. Regardless how much RAM I give to the machine, there will always be a point where "grep --file=in empty" will take more RAM than available, and (since Hurd does not have an OOM killer) the machine then hangs. IMO, the correct behaviour would be that 'grep' exits via xalloc_die(), not that it hangs. Whereas on GNU/Linux (in a machine that has the same amount of RAM as the GNU/Hurd machine): $ : > empty $ seq 640000 > in; LC_ALL=C time ./src/grep --file=in empty real 0.44s $ seq 1280000 > in; LC_ALL=C time ./src/grep --file=in empty real 0.99s $ seq 2560000 > in; LC_ALL=C time ./src/grep --file=in empty real 2.22s $ seq 5120000 > in; LC_ALL=C time ./src/grep --file=in empty real 4.84s $ seq 10240000 > in; LC_ALL=C time ./src/grep --file=in empty real 24.19s $ seq 20480000 > in; LC_ALL=C time ./src/grep --file=in empty Killed real 24.40s Here it was the OOM killer that saved the machine from hanging. So, IMO, there are two bugs: 1) When the allocation of the kwset takes more memory than available, 'grep' should exit via xalloc_die(), instead of waiting to be killed by the OOM killer. 2) In the 'hash-collision-perf' unit test: The use of a perl primitive for measuring the execution time of a child process, that is not properly ported to GNU/Hurd. Bruno --nextPart2434568.3c9HiEOlIg Content-Disposition: attachment; filename="hash-collision-perf.log" Content-Transfer-Encoding: 7Bit Content-Type: text/x-log; charset="x-UTF_8J"; name="hash-collision-perf.log" ++ initial_cwd_=/home/bruno/grep-3.11.69-a4628/build/tests +++ testdir_prefix_ +++ printf gt ++ pfx_=gt +++ mktempd_ /home/bruno/grep-3.11.69-a4628/build/tests gt-hash-collision-perf.XXXX +++ case $# in +++ destdir_=/home/bruno/grep-3.11.69-a4628/build/tests +++ template_=gt-hash-collision-perf.XXXX +++ MAX_TRIES_=4 +++ case $destdir_ in +++ destdir_slash_=/home/bruno/grep-3.11.69-a4628/build/tests/ +++ case $template_ in ++++ unset TMPDIR +++ d=/home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE +++ case $d in +++ : +++ test -d /home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE ++++ ls -dgo /home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE +++ perms='drwx------ 2 4096 Apr 7 15:55 /home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE' +++ case $perms in +++ : +++ echo /home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE +++ return ++ test_dir_=/home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE ++ cd /home/bruno/grep-3.11.69-a4628/build/tests/gt-hash-collision-perf.bCSE ++ case $srcdir in ++ srcdir=../../../tests ++ builddir=.. ++ export srcdir builddir ++ gl_init_sh_nl_=' ' ++ IFS=' ' ++ for sig_ in 1 2 3 13 15 +++ expr 1 + 128 ++ eval 'trap '\''Exit 129'\'' 1' +++ trap 'Exit 129' 1 ++ for sig_ in 1 2 3 13 15 +++ expr 2 + 128 ++ eval 'trap '\''Exit 130'\'' 2' +++ trap 'Exit 130' 2 ++ for sig_ in 1 2 3 13 15 +++ expr 3 + 128 ++ eval 'trap '\''Exit 131'\'' 3' +++ trap 'Exit 131' 3 ++ for sig_ in 1 2 3 13 15 +++ expr 13 + 128 ++ eval 'trap '\''Exit 141'\'' 13' +++ trap 'Exit 141' 13 ++ for sig_ in 1 2 3 13 15 +++ expr 15 + 128 ++ eval 'trap '\''Exit 143'\'' 15' +++ trap 'Exit 143' 15 ++ saved_IFS=' ' ++ IFS=: ++ new_PATH= ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /home/bruno/grep-3.11.69-a4628/build/src/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/local/bin/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/bin/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /bin/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin:/bin ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/local/games/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin:/bin:/usr/local/games ++ for dir in $PATH ++ IFS=' ' ++ case "$dir" in ++ test -d /usr/games/. ++ new_PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games ++ IFS=' ' ++ PATH=/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games ++ export PATH ++ trap remove_tmp_ EXIT + path_prepend_ ../src + test 1 '!=' 0 + path_dir_=../src + case $path_dir_ in + abs_path_dir_=/home/bruno/grep-3.11.69-a4628/build/tests/../src + case $abs_path_dir_ in + PATH=/home/bruno/grep-3.11.69-a4628/build/tests/../src:/home/bruno/grep-3.11.69-a4628/build/src:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + create_exe_shims_ /home/bruno/grep-3.11.69-a4628/build/tests/../src + case $EXEEXT in + return 0 + shift + test 0 '!=' 0 + export PATH + fail=0 + require_perl_ + test perl + perl -e 'use warnings' + : + n_pat=40000 + : + seq 40000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 40000 '*' 2 + n_pat=80000 + : + seq 80000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 80000 '*' 2 + n_pat=160000 + : + seq 160000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 160000 '*' 2 + n_pat=320000 + : + seq 320000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 320000 '*' 2 + n_pat=640000 + : + seq 640000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 640000 '*' 2 + n_pat=1280000 + : + seq 1280000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 1280000 '*' 2 + n_pat=2560000 + : + seq 2560000 ++ LC_ALL=C ++ user_time_ 1 grep --file=in empty ++ perl -le ' my $expected_exit_status = $ARGV[0]; shift @ARGV; system (@ARGV); my ($user, $system, $child_user, $child_system) = times; my $me = q(hash-collision-perf); $? == -1 and die qq($me: failed to exec ") . join (" ", @ARGV) . qq(": $!\n); my $rc = $?; my $sig = ($rc & 127); $sig and die "$me: child died with signal $sig\n"; $rc >>= 8; $rc == $expected_exit_status or die "$me: bad exit status: expected $expected_exit_status; got $rc\n"; # Print milliseconds of child user time. $child_user *= 1000; print int ($child_user + 0.5)' 1 grep --file=in empty + small_ms=0 + test 0 -ge 200 ++ expr 2560000 '*' 2 + n_pat=5120000 + : + seq 5120000 --nextPart2434568.3c9HiEOlIg Content-Disposition: attachment; filename="last-stacktrace.png" Content-Transfer-Encoding: base64 Content-Type: image/png; name="last-stacktrace.png" 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 4GnxPdR7OXJTdeRYEY+Yz/JVRjfCMx04j5QSv2ACAPBgl9tQH7J5SF+lpZWzZkPZ6idr5awZa4ba PLKZ84mMtYdov6283qa69Zx61uQCAIBDnf4jH/pHU1ovlW36MZGXVy5ZfqxLFMnRjaK2R2gfOaY0 T3O0Pcc8Za7maD9ab8Va8jG9PLVirNZ17r1WND+SAwAA2n58fV2emZn9/vWzbAMAAADQ8HZ7v95H PgAAAIAzYUMNAAAAbMCGGgAAANiADTUAAACwARvqy0hf5Rz0myFglv5oBI/yDM+F+xrzYsDRTngd uq8X4EDVr80r/4VC718rzFptc9W+82ytXj/6ouzlee3aR9bK9dqyZP32kuZqe6Z5zytvsJZ/vsfP LP3Zf75HjPHs9ljDo95XZ3zNqG5ktC9tzzQva5279tXLq7VnrbHM4v1Mkc/tiLEiUjpkLpHnNJKT vwLUawMO8XZ7/8jFzP4tKSX3sebU2uaWcowt4/X6GYn12lul189omxfTEsl5rpL+3Mdmltn9z+7P K0eM8Yhy5HntMVb1fbUWHyiR9/he8Y7zYlpqOa2fKV68F/Pay7Zeu/d413LUOGWpjVmL99pWFG9d Nab1WqwVp1D2Lm+394/hj3ykw34T1Luzy1espHWz+1ikn4iz9XO8lOr/3HWO55xaXk++o5z+/C0q kjNTOU5rrF5Or58yXssx6/djFsspRXI8Ot9aP735eDGz+3ivn6yVE4nleqsfFclpCb23pvS3DNAx 8t29ktZrsVl0TiO0D++8zO7zlLbX+jlU+Zx7c8mxVo5ZvF0fe3p9HewUzxNe1t1HPsqLsXVhtt6M MEu5/vmxrrvWI5KNHfep96alP4y0HpX+2Lf/la51L6b1Wbx+I7Fe3YvlxxoveW0a03otlrXaIvT4 Xr0Wy2ptXjwS03qUHqf1UqttmpTMyteT1GuvzZHX4B5q7wdebC9HjjWFPufR2Nq62d+611bS9oHr MPI8RHKAM7jbUOfNUr6Ia29+57KYfdskjm4Ycz8aGzGjnzXnU47Xy93XrOslsjGJ5BxpZD5HHWNW P27GRnDr8Vt4Y3uxEdF+ZqxhSOf1Ne31F/hZkHOO4I2l83l5R65HZ6w1z035vLaOy3mtHOBR7jbU 17XY303l6IvN27h6sR4vf6SfNcq+9x7rMQ7ZrOxs+edz45Ufb5H72eqwjaDNm/PZHLmGRyo3sbVN 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 PzNExtIcrcfpD2qzPZ/3v7w71fr5aO8jHd5m3Ls7XeZ4/UREx3qYZTFL6fO/Gm8JI7sAACAASURB VPMeezllTOu9nKw2zgrlpnHL9Vdez7P68ealm9wcU5Hz6o2V67W2kjcvAMB6P77+QRczM/v962fZ BuAiWnchgRauHQDY5u32foWPfADoYUOEEWymAWAONtQA8KLYTAPAHGyoAQAAgA3YUOPp6R9daR0A AGALNtSoYuMJAADQN/y1eYdLafgrtlabNFbka6t6dFPb6uuoPzAq56Tj6XyzMi+Sk81Yw5491q3V p56/5ml7pnlm7fVZ009Wm7f2NZJT63uLVp+R+Xg0z+xc62zWn48X36LVZ2/O2p5pnln/vDxeblab t/bl5WStPrz4Fq0+e3PW9kzzzM61zr2cWt9btPqMzMejeWasc6vPyHw8mmd2onV+u71/5GJm5y0p 3cf2KhPGSkUf5eM1xTvOi+V4rW20eP15sV6JHOPlzFhD79hefWtpPRdeXGNar5WR9Wnl1eYdiWnd i2l9a6nNN7f1YlqvlTOts8Z67TNKbb65rRfTeq30zssrrbzavKOxVh+tY0bL2rE0pvVaOdM6a92L aX1rqc03t/ViWq8V1tmfb27rxbReK2dZ57fb+8f5P/KR0mfRxyq31XIisehYHUl+u1mW+388Qeu1 WISO50np819Ey8UTae+NM4uO5a1hlM7Zq/f6zu1nWSMdJ3IOLdrfHiJzZJ3b9HhvPl5Msc59vT4i c2Sdt4vMkXXeLjJH1rnt/B/5yCeX0t/HymvzYj2BsWpP1pYnoSbaZy/Pu0g05tVn0H49kZy95Rdi ax7arnWz/nPxSN58W/E9sM738T2wzvfxtSJ9sM738TWix7PO9/E1osezzvfxNc6/oZ5lWcxSsVEu H6+wdcEzvXBbT2ZKfze3tZy1ev3k+SmN9fp5JjPOtbauSnNmjO1pXXeZN2c9xssZpX2PiM5Hc2aM 7Rld5z315hMRnbPmzBjbwzpfd51zbq/fmtHjStE5a86MsT2z17nM6/VbM3pcKTpnzZkxtmfWOj/P hrpzomZmtix/8zqLd4TyCWo9mWVb5Infk4796PnMlJ+Pvc9H+9cXqbabPXadvbG9mNb1vDLWuU7H 1jmvwTrX6dg65zVY5zodW+ecRebJOtfp2DrnrMyrzZl1rtOxdc7Ps6F+4CLDF7n4IznYrrXO+qbQ ykVba+1Y53laa8c6z9Nau1nrPHrcM2mtwax1RnvtZqzz82yoI1L6u/EuH6+gi56tXXiz70+Y9+R5 MexrWY757fws9DyPOnfW+ZhzZ52POXfWeezc1x7HOo+d+9rjWOexcz//t3yMSrLxTbKBXpb7nIBl WdyiOano23tyNKbH7K03Vq99b7oeul570rH35J1XZGydo9fPI0Xmo+ewJ28+kbF1jl4/e/HGGpmP HrMnbz6RsXWOXj97mTWWnsOevDlHxtY5ev3sZdZYeg578uYcGVvn6PWzl1lj6TnsyZtzZGydo9fP XryxrnOHelnM8sLpgpVtZWxUa6yg8onWRY/SiyXHlF5QZt/zIv1ojtZbsb3MWMOj9Z6LMm5235Zj kXU+an2i8+md10zPuM5m/TmbPW4+tTF7c77qOkfOfZbIWL05P8M6Z7XcrV51naNznuVV1/nH1z/o YmZmv3/9LNsAAAAANLzd3p/4Ix8AAADAAdhQAwAAABuwoQYAAAA2YEMNAAAAbMCGGgAAANig+7V5 Kd1/154X26rVZ++rU7Q90zyz+le4mK3rJ6vNW/vSHG3Pyrxa31u0+tQ5aZ62Z5pndp51zso8zan1 vUWrz96ctT3TPLPzrLO2Z2Vere8tWn3qnDRP2zPNMzvPOpv1c2p9b9HqMzIfj+aZsc6tPiPz8Wie 2fZ1juRkrbGyVk5rTUa1+tRz0zxtzzTPrH9enj3X2ax+7rX4Fq0+9dw0T9szzTNrn3ukn0hO1hrL 3m7vH7mY2beSUvpIKblxjW0ptXFyWy+m9Vop80aO0VKbdySmda9EctaU2nxzWy+m9Vo50zrXYmva 15bafHNbL6b1WjnbOmvRHK1vLbX55rZeTOu1cqZ11roX0/rWUptvbuvFtF4rrLM/39zWi2m9Vmas s9ZrJTJWL8eLbSmvus65rdZei4+WtWNpTOu1Ej332jFevVZaY73d3j+qH/lIjd8sluX+C7dVbk8p /Vs8rXFm0nEi59Ci/e0hMkfWuS1yfGSOrPN2kTmyzttF5sg6bxeZ47Ovc0tkrEiOF1Osc38szVO1 40qsc3ssd0OtB3q8zlTuJxcvvzfOI9XWoRbfQ23dSqzzdrV1K7HOcbU+a+tWYp23q61biXXerrZu pWdd5yPV1q3EOrdF+q6tW4l1rrv7DPXMwWb0U3vClObMGNsTWZ+j5zx6XOnoOfewznPm3DNznWfp zSciOmfNmTG2Z9Y6ezm9fmtGjyt58/FozoyxPXuu86jefCKi89GcGWPXHDlWxIzxWee+GeM/6zrf bajXyIsyMvAa2n/kxI+YV4uOvWXOrHOdjq1zNvNzNGbGOrfo2DrnNVjnOh1b5+zNz4uZsc4tOrbO 2SyWY/aa6+z1uddYGev8aa+xMtb508hY7oZaT2yk46trnTPrM09r7VjneVprN3udtx5/Za1zn73O r6y1dqzzPKzdMVjnY+y9zncbah2sN4FlOea3mbPQ8zzq3FnnY86ddT7m3FnnY86ddT7m3F9tnR+F dT4G6zzG/aPEtfLiH8F7kiNj6xy9fvbijRWZs9Jz2NPonHWOXj97mTWWnsOevDlHxtY5ev3sZdZY eg578uYcGVvn6PWzl1lj6TnsyZtzZGydo9fPXiJjRXL0HPbkzScyts7R6ydi1liRHKXH7MmbT2Rs naPXT8SRYyntd0/enCNj6xy9fiJmjXV3h/poOkGzz4mXyhxtyzFdkF6e1z7TrDnPwjp/j+3lVdf5 aK+6ztE5z/Kq62wWy5nlaus8c6xIziyvvM6Rc58lMtYzrvOPr3/QxczMfv/6WbYBAAAAaHi7vc/5 yAcAAADwqthQAwAAABuwoQYAAAA2YEMNAAAAbMCGGgAAANjA/dq83teHpHT//XtbtfqMzMejeWb1 r3Axi/UTyclaY5nd96V5rTUZ1eozMh+P5pm1zz3STyQna42lvPP3Ylu1+tRz0zxtzzTPrH3ukX4i OdmMsbxjt2j1qXPSPG3PNM9szrl7Wv15bVnZn+a11mRUq089N83T9kzzzNrnHuknkpPNGMs7dotW nzonzdP2TPPM5py7p9Wf12Z235fmtdZkVKvPyHw8mmfWPvdIP5GcrDWW2X1fmtdak1GtPiPz8Wie WfvcI/1EckrV83q7vX/kYmYfKaUPM/tWNKb1rSWlVO3Ti2tM67VS5o0c49VrpTdWJKb1reUV11lz vRwvtqXUxsltvZjWa2XNudfytF4rvbG8mJZIzpryiuvcikfb15ZXXWctmqf1reUV1zkS0/rWwjr7 Ma1vLc+4zjnXy3+7vX8MfeRjWe6/BFvl9pTSv8WTajv9yXScyDmMmjVW5DjWOTaW5pZax2Ws8/ax Isexzu2xNMfjHadY5+1jRY5jnbePFTmOdd4+VuS4V15ns/vx1N2GupVcikw8D56Llx8d7xF6i7dF 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 T9meH2teL0fHyTEAAHBOP77+QRczM/v962fZBuDLM3xtHX8LAQDAfG+39yt85APADGymAQDYBxtq IODqd6cBAMB+2FADAAAAG7ChBibSP9bVOgAAeD5sqAEAAIANXm9DHbljGMk5mZTS5ruhuY9WX5Ec s9h8jswx698tjvYzS22sWnxE+Vx5/XqxUUeOVfL69WIj9Jy8c9P6VrVxctsMej7eeFrfojVObp/l yLGyXp+1uZj1jx0R6bOWU4tv0erzbM/X2eZT8vK82Fa1PnVtvDXS+gy9PmtzyW2z1foc+h5qnEtK f78OrXy8hnecxrQeiXntGt87x6z+Asii/czSm88M3nl4sRm8fr3YbEes497nUDpizcz8c9prLb1z 8mIzeP16sZl663bG95ZIziytsbz18GIzXWk+pWjeVr1x9lwLT28+ez8/qjmft9v7Ry5mdr6S0t// 5qI52u7laPtojpfntWveSE6gJOc4jWndi2ndi2ndi2ndi2ndi2ndi2m9F/PaanEvNqv05tNr0z5y qeWMxLz2s4zl5WpbK67trbG8mFd6eWcbyytenhfz2ltjbYl57WcZS/O0rRaPxrz2rfNZm1Mrs+bj xaMxr/3Z5hPNq8W1fet8anEtvbxnnM/b7f3jGhtqnXyvXou14tEcr01j0Tl7saJePrm1J1rrXkzr tZgWzdG6F9O6F9O6F9O6F9N6LdZr8+JebHbpjdFqTyl2LWip5dTiuU3bte6VWk4tntu0Xesa89qj bdreq7dKK/dsY2lptffatL1Xr8Va8dym7b16LdaK5zZt13qkzYt7sVY8t2m71qNt0ZxW+x7z6eXW 4rlN27UebdNSy63Fc5u2a32kLZqnZdZ8anGvtHKfcT5vt/ePa3zko3c7v9f+CJE5dXJm/W+MZfn8 p+Kj/9sxff0vDc3J/WgMj7Fm7WvPaVT0uPL6iB6jesf1rt81Iv3MuuYjxx051iy9sWa+b/SO88Ya 1RvraM8+n6PeoyKOeB+LOPq9LkJfX6P9jh6nzjSfa2yoIya9iYaMjDXhydqi/EHTunBaL2CvzYth jvycbV3fSB+zxiqPr/U3a6yIrWN5x9X62zqW2f14tf5mjBW1dSzvWC9mtn0sM38NPTPGmumV5xMZ 58j5lGPUxjxyPhFHzMfruzbmEfMxu59Tbcwj5vMcG+qUzHSRKm+iU+hYT2Lviw3He9bnVDdJz3qe R2Dt8Ehcf228113H631t3oWkdP/1NPriisovwvxbmuJFek615yti7XO6daw1toyVr+Nccqxmy1hr MdZ2zzpWxKvN58j3qIi1fe89nzO/10W82nyusaFeuwBr87faaTx9MZUvqjKnvEC8NyiN6TEzad86 ttmxORGz+tmLzm9PjPXdyDGjY41grLbIa3nWWB7t+9HzGcF82l5pPiP97jmfEXvO5xof+ViW75tW fUPy2msLVrZpP1krx+tbcw5WXiC9N+sW7yIr+/MuRG+8yHyOzCnnXMuN9DNLZD6z6PNlts9Y0Wvj ao48ryPHOtLR51WOtec4ZrHX8tneWyI5s0TG0mvD7D5nlt58HnmtevM5Wm8+Z1ufs83nx9fX5ZmZ 2e9fP/9tOI2UzHZcIAAAAGDU2+39Ih/5AAAAAE7q/Btq7k4DAADgxM6/oQYAAABOjA01AAAAsAEb agAAAGCDu6/N068gycqvBkmp/12aa7X61DlpXuvYUa0+j5xPb6zM+wqX7BHzMauPW4uPiMynl/Pq 8yl5Y3uxUb35aHtW5h05n6zM05wj56Pt2SPXp5fz6vMx+5vntT9iPmb1cWvxEZH59HJefT4lb2wv Nqo3H23Pyrwj55OVeZpz6Hzebu8fuZiZW1JKzfrWklKq9unFNab1reUs8/H66cV67VuK148Xy/FW m8ZGitePxrTuxbQ+Wrx+NKZ1L6b10eL148XKNq/di40Urx+Nad0rkZxI8fqJxta0R4vXjxfTojla Hy1ePxrTuhfT+mjx+tGY1r2Y1keL108v1mvfUrx+vFiOt9o0NlK8fjSmdS+m9dHi9aMxrXsxrY8W rx8vVrZ57V5spHj9aEzrXonkRIrXTzS2pj1avH7K2Nvt/WPoIx/Lcv9l2iq3p9T+J7PThN8ennk+ PTpfb2wvpmbNx+x+Turo+fQwn/Zz9oj5tBw5n9a6ZEfOJ4L5tB05n5R4f96K+bSfs0fMp+XI+bTW JTtyPt071MnZlUfbtF3rkTYv7sVa8dym7VqPtHlxL9aK5zZt17pXNEfrtVgrntu0XeteaeW02nrt e8ynl1OL5zZt17pXtuTU4rlN27XuFS+njHnt0TZt17pXNEfrrdLKfdb5aGm199q0Xete0Ryt12Kt eG7Tdq17RXO0Xou14rlN27XuFc3Rei3Wiuc2bde6V1o5rbZe+x7z6eXU4rlN27XulS05tXhu03at e8XLKWNee7RN27XuFc3Requ0cp9xPm+394+7z1DP1PvNIcL77WK039HjSt58Rq2ZTx5zzTFrren7 ivOJ5LSsOa43VnkN1XJ61hxXm08K/IYftaaf2nzMvq+NmZ8Tsea4K81nljV91+azLPfvh5oTtea4 NfMZpX3XzHgtR0T7vup8as9pVPS4yHwiOT3R41pjpXT8+3NrPmbHvx9eaj5b7lC32r24F+u1eXEv 1mvz4l4s0qallVtr8+JerBWvtXmxXpsX92KtuJZIXi3Hi3uxVnxtTivPi3uxVrxWWvm1Ni/uxVpx r03rWmrtXtyLteK10sqvtXlxL9aK19q8WK/Ni3uxVtwrvdxauxf3Yq14rc2L9dq8uBdrxWullV9r 8+JeTIvmaL0W67V5cS+mpZXTauvleHEvpqWWU4trqeV5cS+mZWtOrc2LezEtmtOra6m1e3EvpmVr Tq3Ni3sxLZqj9Vqs1+bFvZiWMqd7hzpN/O0IY872HFxxPpGcWY4cKyIynyS/4UeOGbVn3yOuPJ81 uaOOGGONs80H2/Gcth35/oxthv4osbQs8/4X2wzPNJ89XjivNp9ITumI+ayx93yWZflWcqxm7/ms xXzamE/b1vnM9mrzWfucHjGfNfaez7Ic+/4826vNZ/OG2mzbJPdw5Hwibwh7zkf7fvR8RjCftlea z0i/e85nBPNpO3I+j34/1L4fPZ8RzKftleYz0u+e8xmx53yaH/k4gr7ZmH2ecOadfO8NaYvefMq4 2X3bbHruZvdjlmukbbNF5hNZw1nWzifTnFl6Yz3yes72HK+nN5+zrc/Z5nO03nzOuD5ljrbNFD33 Ms9rnyU6nzJnz3mNzCfz8raKzCeSM8uRY0VE5hPJmSUyViRnlshYP77+GNHMzH7/+lm2AQAAAGh4 u73P+cgHAAAA8KrYUAMAAAAbsKEGAAAANmBDDQAAAGzAhhoAAADY4O5r8/RrQbLy60FS6n+XZpSO 5/Xby3nm+ZRa/eY5ee2t47bo9Vtrr8W3qvV7tufrbPMpeTlebAavX12brMzzjpuh1W85L81pHbeF 1+8Z10fnpDm147aq9XvUfHSczOs759bavPhaa+ZjVh+3Fl8rOh/N89o1NkLHybRvzfPaNTZCx8la fXtje7ERkflEc46aT1bmavuR87nbUHsD1zrayjtRjWm9FpvB61djWq/FZms9B+X4R8zFrD0fs377 bLXxvPXwYrNdZT6lSM4srbH2XgtPaz5HPD+qNh9vHrXcmWpjeGvjxWY7y3wi/Zbj7zkXs9h8zOrr N1tvPt56eLFZev16Y3uxWdb0e8RzFplPJGeWyFh7Pj+qN87QRz6W5f4LrlVuTyn9W/by7PNpXTDa 5o3txdSs+Zj124+eTw/zaec8Yj4tR86n1ZYdOZ8I5tM2ez4tOldvbC+mZs3H7H5O6uj59DCf9nP2 iPm0HDmf1rpkR87H3m7vH7mY2V1JKd3Fom3arnWvaI7Wa7FWPLdpu9a9ojlar8Va8dym7VrXWK+9 FWvFc5u2a11jXnst1yut9j3m08urxXObtmtdY167V2p5tXhu03ata8xr13gtJ9Km7VrXWK+9V1q5 zzofLa2cXpu2a11jvfZWrBXPbdqudY312luxVjy3aXuv7hUvx4u14rlN23v1Xunlt9r3mE/vuFo8 t2l7rx4tteNq8dym7b16rZR5rWN6bdreq3slkhPJfcb5vN3eP+4+8jFT7zeHLBW/Degx3m8XmhMV PW7tfEZp3yoFfvuaqTfW1eeTn7c1x5R6x62ZT+sai+odF5lPJCeq1090LH19RY7x9I676nxm6Y0V mc+y3L8f9o6p6R03Op9RvbHM5l0bEZG+rzyfnNvKaYkcF51PmVfL6Ykc15tP5JqPivTTm49ZLCci clxkrEhOROS47lhb7lC32r24F9OiOVqvxXptXtyLadmaU2vz4hrr1dfEem1eXGO9upZeeyvHi2us V4+2RfK8uMZ69Vpp5dXavLjGenUvpnUttXYvrrFevVZaebU2L66xXn1NrNfmxTXWq3ull1Nr9+Ia 69XXxHptXlxjvXqttPJqbV7ci2nRHK3XYr02L+7FtLRyWm29HC/uxbTUcmpxLbU8L+7FtGzNqbV5 cS+mRXN6dS21di/uxbRszam1eXEvpkVztF6L9dq8uBfTUuZ071Cnib8dYUyS34ge/ZxccT5ebC+R +RwpMp9IzixHjhVx5fm02mZZM58jnG0+2I7nsI1r/jqG/iixtCzj/4tt9LiWZ5rPsizfSo5t8Wrz Wfvmc8R81th7PpGc0t7zWYv5tDGfti3z2cOrzefI9+eItX3vPZ+11/ze81nr1eazeUNttv8k1zpy PpE3hD3no30/ej4jmE/bK81npN895zOC+bQdOZ893w8jx2jfj57PCObT9krzieSoPeczYs/5ND/y sTfvxPTNJpIzS3SsMsdrP1o57zPMp1yfM8xLn1Ozx80neo29qrOtz9nmfCnS4gAAEdJJREFUczZn XJ+j3p+j537U+3N0Pke9P4/MJ/PytorMJ5Izy5FjRUTmE8mZJTJWJGeWyFg/vv4Y0czMfv/6WbYB AAAAaHi7vc/5yAcAAADwqthQAwAAABuwoQYAAAA2YEMNAMAD6R87aR3A+bGhBgAAj8UvEbi4u6/N q/1mXH49SEr979KMiIxldp/ntWtshI6Tad+a57VrbItyvFq/Ocdrf8R8zOrj1uKjevM52/N1tvmU vLG92Bat+ejaZGXekfPJWjlHzueM66Nz0pxnnY+Ok3l951yvDeeiz6s+Z9qe6WvQszbH7D5P282O zTHrvwZf1tvt/SMXc/6tcnP+TXOtj5ZIP16OxrQ+WiL9eDka0/qWEumrzPHyvdhoifaVUqrm1uIj pdeX164xrW8pvb68do1pfUtZ01ftOfNio6XXV689mhMtkb56Ob32NWWkLz1G61tKry+vXWNa31J6 fXntGtP6zOL1Xca8di+udcoxxVt3jWk9WvQ4rXvFy9GY1r2Y1r2Y1tfEKPbxdnv/GPrIx7Lcf8G1 yu0ppX/LXp51Pin176Rojje2F1Oz5mPWzzt6Pj3Mp537iPm0HDmfSM6R84lgPm2z5hOhc66Nreel 9ctK6XupabVrH7XcXjs20+sZoneHOjV+G+m1aXuv7hUvx4u14rlN23t1r3g5XqwVz23a3qt7xcvx Yq14btP2Xr1Xevmt9j3m0zuuFs9t2t6rR0vtuFo8t2l7r14rZV7rmF6btvfqXonkRHKfdT5aWsf0 2rS9V/eKl+PFWvHcpu29ule8HC/Wiuc2bde6Fq89GnvK4p2nF4u0adFcrTux/JxquTtOiuZoPVK8 Y7xYpOhxWvdiWvdiWvdiWqf8LW+394+7z1DPFPlNJslvknqM9xu95kRFjuuN5c1nlPbt0bEix4yK 9H3l+eTcVk5L5LjofMq8Wk5P5LjefNLEOw6RfnrzMYvlRESOi4wVyYmIHDdrrIhI3735LMv9+6Hm REWO643lzWeU9o0JZqxpSkP9rHk+e+/Peo15ORFr+sm5muNd87NyPJqj/by0LXeoW+1e3Itp0Ryt 12K9Ni/uxbRszam1eXGNad2Lab0W67V5cY1pvRaLtPVyvLjGtF6LteJaanleXGNar8W0tHJqbV5c Y1r3Yr26llq7F9eY1msxLa2cWpsX15jWvZjWa7FemxfXmNZrsRntXlxjWvdiWq/Fem1eXGNar8W0 tHJqbV7ci/Xao7GnLSnd3SmulkheLSePo0XzBkrk+erl9Np7ebV4rU1jWq/FtGiO1muxVyzdO9Qp zbt7BTwK13FbkjsOrNc18DydB89FRV6T/B6zZY16d6ZbbQ+09drYejyOM/RHiaXo/yY4CvNpe7X5 rH0zOmI+a+w9n2VZvpUcq9l7Pmsxnzbm03a2+TytZfkso2udOpvpgJT+/oFpWTTnTFJa9/MLj7V5 Q202/qY0ckzEkfOJXPCj84nQvh89nxHMp+2V5jPS757zGcF82o6cz6PfD7XvyHxaUrrfBKojc5q2 HFtKaWwzLeMvy/ebB7mstWlNCrP62csR1+qzaX7kY2/6ZpNjWu/lzBIdq8zx2meJzqfM89pnic6n zNlzXiPzyby8rSLzieTMcuRYEZH5RHJmiYwVyZnlyLEiIvOJ5MwSHavM8dqPVs77DPOJ8tZ7lWW5 29Sad/5lTn6sedqP2fec6Fgd3jnrcxbJiYj2ozlm3/Mi/URyzPqvnWg/Zn7us/vx9ceIZmb2+9fP sg0AALyolLbdpcRre6Xr5+32PucjHwAA4Hm80mYI873i9cMdagAAAGAQd6gBAACAjdhQAwAAABtc a0P97H8x+uzndwEpXeerfq4yT+AwvCQAPMi1NtSoutJGcLpJ553/iGLrH1Ic9Vwc/bVER4612pFT O3KsCJ2P1vFQ+f0g8r7QawdwXg/9HurV1mx0UlqXf2HlX9OWj/EYR290AZyT937sxXIcwHVdZ0Od 32ycNyIz+9tu5ufkDXYkr6Q5s/ox6/cRoG/OeTPnvWFP0TuvvD6RWEnbzfo5ZXt+rDkT6Q+80TWO 9BPJMZvzfPfGKtvzY815qGRmR02nNpZcqnc5+bgyT3PM+v2o2nxKXo4XM7uPR+YzI2f2+vT6iQiO NeM1kV/D+loEcCFvt/ePXMzs3CWl+5gX13qOabxX92Iz+9G6xFJKbtEcHcuLTSlevxrTuhfTuhfT ei3Wilt8DbV4/URivTYvrjGt12KRtl7xjvVirfhDS3Jie5XaWF5cY6kSa9VrsV5bGV+bU3tci2nd i2ndi6VKrFX3YpF+IsU7xovZ3/cPjee2SCzSRqFQzlvebu8f17lDPcOGOwjfzOqntCxmnTuFl5DP I8+9fFzmjBg4LrKGOSc17vTW4jPs2XfPI8d+at6yerGekWMyvds8w0h/0WOieSXvGC82Q6Xf1mvI u+vcygdwXa+1od6L9wb5rP/rLnJeeVOdH3si/ZyM/mAcUf6Abf1gnTFW1JFjTbXHhrGmNdZin+35 cdSaXNWaj1m/PSJ6XpHLJ5KjWmNehPdLuhcDcH3PsaEuN3C5/mhnmMMeZpyXd9f65Js674fg6Ea0 vCNe1ktebA8zz+ul5SWMbECPsNi8TbVZ+7y8WMmbB5cYgCfzHBvq7KBNyFFqGxvdAJ1OuWH2Ns8H OvMalhvrM8znUrxN2l7WjFVuQKPHrBXte7F4bs8R53VRrV+MAbyO59pQn+0udam3sXQ2fpE36PwR gsjmbJc3fj0vrS/LfUw55+7q9eOYeq6F2ka9p/X8tNSOq8VHjZ7XKnmI1rRbOWs2da1+slZOZKxI zijtW+s9i60/JtvruJmXWG+sltbz7tkyFoCnd40NdflDPj9ubeJqsZ68+dPYWpF+NEfrK+RNdX5c U+YN8ebYGK9K+9F6K+Ypc2s5G+naaT0rY95z4h2nz1kkZxYdS+ul6HX2chb73GxpbK1Z/ajcb9lX OZY+ziLzGcnRepR3nI41y4qxWq8F7/Xk5ffeNwBcwKW+Nq9WvK8a8mIUvpbpiQrPJYVCoVAojy9v t/ePH18baTMz+/3rZ354PXpXjd/u76Q09+MBAAAAr+7t9m7Ps6EGAAAADvZ2e7f/0CAAAACAODbU AAAAwAZsqE8hfZXr0L9cv4L0RyP7uuIaAY/C6wXAlVW/Nq/8A7beH7P12ufwvtdpRK8ffVPv5fXa s1Zerc0s3k9E2deWftBzzGviOLrZeaZzm2Xm1531rp/eWL3nS9szzVujN+eslpe/Ys5r28ORY63W +7Ew05FjRZxtPg+mr1Xvmu3laHvWy9N2dNS+Ni8VX8lVPtaSUmq2zyll/1vG6vUzEuu1t2KteK3N i0XK6HGUkbL/a8IpO43pnYsXO33Zcc7R98tI6b2n9saKxrREcmqlN+doXqttdjlyrNUlObG9ypFj RUpkPpGcJyjeNaoxrddiWjRH67UYxS9vt/eP6h3qiPT1G36q/PYzh/66ujgxrXsxrXv9ROgxo/3M pOuvc5k7v/x8e7+9eteEl9dTfjxj+edvffnnb9zse57ZfXtWO97ss60cw8zPi8prUKWvF81N6TNW 5mmOWb/drD/WGfXmPGt9cj+9WIc+396dVq33YrX3VD3GG2smnYc3Tm/OWSRvxvlo/9pX2Z4fa85D JbOJb9dttbH0KdKcfFyZpzlm/X5UZD619hnzifYT0RvryymvQQy521B7bzaerW96zy2yLuXa5sd6 nNY93juQF5un90NRrw2tR+VNbd7wth5nXszsM6ab75Iep/VpUjLTtYjE1taDsdrzqJu2wwTm7MbW 1oMi6zPTjH5H+vBeo9GY1j3ecXvwxtFYfqzxU0hmO751f1cby4tHYr16LZbV2jSu9UzjvXo0pvUI 7xgv1rHX9XnKa/8J3G2ol+X7HQJv4b3YYy32/WoduHLN7G8/GhtV9qX9rJ1r7ktztV4z87zajro2 Zm54Z/bVFF2baN5aA5uhrNxcrjlulWi/0byNZp1n5H11tkOer4AjzjU7apyX4y2rF+sZOSZqVt+z +lGVfqPXbH49a35+b9nK60fHQtvdhvq6FqtvOqO8za0XiyqP29JP79jIi0mP7/V5Da27zqc18uZ3 gje28s11103SUeuzLJ9j5WPLxzsof2DttnaFGc+X/oC9givO2cyOfUtujbXY3x8ptRzPmlzVms8o r7+rXhqd16+2jbwGvDG8GOruNtT5iSifEG9R9QnzcjBD753Ga1//Yroi72MZp99ge5u2gTe/fzeD Zf0ZsD6Ha7131+JrHfXzwutXx0ZAXsK8dPOfqrjFvv9I2zKXLcc+iHdNbzG7P/x1t6E2+/smWlt4 jdXyjlVuLL1N5pFmjT+rHzytja+72majfD2f4/U9aOO8I+sTVa7jnmu6Z98jdC5nm98pHPlWv2as I36kRvuO5FxQfo/xXhO8Vq7F3VCfy2LfX3Heq09jeowX0/aoWf3sxd8AvIKz3J1elhXfVFDZsIWV x0fHK/JCc1yh9cNhyN7rsyx/c5z2yHno8+099xrTY6L0uJE+tth7vNn95+txV3mI1rRbOWt+hLT6 yVo5kbEiOaO0b623lE9l9Jgeb3wv5mmtsyfa70azX0OIu8CG2uzzKlx79Xp6/ZTtZUzN6idC+zH7 3peOpfVWbL3yB9T0zdNK+s0dWs/KWH6sHxU5TLmB8+pRKX0e24p5fesxAXkTpzGPl7uKzlnrUboW tdgk5XnX1iYi8vrqjeU9B15eT7SfyJyPonPWeqm3ji9rMZvy42JWP8nuj/NiPdH5aJ6X06N95Jij d+15168eo9f8CO+1MtrXy6r9wy4UCmVbSXt+Kb7Xtxd7QNn1vKPFm4MXo5ymnOK6oZyveP+Iixeb Ufbql/L05e32/vHjayNtZma/f/3MDwGcnd65OMHdhJRO9L8bT7g+AAboTdq9Xsojd74BM3u7vRsb agAAAGDQ2+3d/kODAAAAAOLYUAMAAAAbdDfU+lefW2hfWq+J5l3Vs58fAADAM2tuqM/yB0be17lc wRXnDAAAgHWaG+o12DyOO8MvLQAAABhT/YddenenI18kHskxi+Xlu9S19gjd9Ht99XLyHFpzLtvy Y83JWu3RsaKxkrYDAABgUO0fdkmNL9nXNq17sZRSOKZ9Rdp6xTtWY1r3YmvmXItrqeVFxtK6F9N6 LUahUCgUCoVCWVfebu8f0z7y0VO7I1qLH2F07NHjRhw5FgAAANarfuQDzyXJRz4AAAAwx9CGuve5 XpwPzxEAAMA+hjbUGZs0AAAAvLrqZ6j1LrQnpfRv6anl1OIqOd9csVV07CuJnlM0DwAAAG1Dd6i9 za3GdEOu9Vpc+51Fx8kxrfdy1ij78/opx2rlteictd6KAQAAYILa1+blkpyvV4vGZpU9+6ZQKBQK hUKhUEbL2+3948fXRtrMzH7/+pkfdnHHEwAAAK/u7fY+9pEPMzbQAAAAgFnjjxIBAAAA9LGhBgAA ADa41IZaP7e9pyPHAgAAwHW5n6HWzeTen5dO8pV7AAAAwFXcbai9za0Xe4Qj5zB7rLOsIQAAAOa6 21BH9e5i5w1kmefl6GPNyVrt0bEisRw3u+/DLDaW2fdz89oBAADwJPQfdkmBf0TFy9FYSsmN6XGt uJZaXmQsrddivbaRsbROoVAoFAqFQnmO8nZ7/9j1jxKPvDP7rGMBAADg3HbdUAMAAADPbvgz1KiL fMYaAAAAzyF0h7rcHCJuWRY20wAAAE/uZe9QH/FLQuQudc6ptQMAAODc7jbU+nGFHNN6L2eNsj+v n3KsVl6Lzlnr2YyxUrr/Oj4vBgAAgOv78fV1eWZm9vvXz7INg7zNsxcDAADAtb3d3u/vUGM77+43 m2kAAIDnxIZ6J2ygAQAAXkPoWz4AAAAA+NhQAwAAABuwoQYAAAA2YEMNAAAAbMCGGgAAANiADTUA AACwARtqAAAAYAM21AAAAMAGbKgBAACADdhQAwAAABuwoQYAAAA2YEMNAAAAbMCGGgAAANjgP8tK SqmsupZl0RAAAADwsrhDDQAAAGzw4+32/pEr/++//6tsAwAAANDwP//7f9yhBgAAALb4/0/WgO+0 DbEkAAAAAElFTkSuQmCC --nextPart2434568.3c9HiEOlIg--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Bruno Haible <bruno@HIDDEN> Subject: bug#77613: Acknowledgement (grep-3.11.69-a4628 on GNU/Hurd) Message-ID: <handler.77613.B.17440472151368.ack <at> debbugs.gnu.org> References: <3353032.JoGBPyJhv8@nimes> X-Gnu-PR-Message: ack 77613 X-Gnu-PR-Package: grep Reply-To: 77613 <at> debbugs.gnu.org Date: Mon, 07 Apr 2025 17:34:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-grep@HIDDEN If you wish to submit further information on this problem, please send it to 77613 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 77613: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77613 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#77613: grep-3.11.69-a4628 on GNU/Hurd Resent-From: Jim Meyering <jim@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-grep@HIDDEN Resent-Date: Tue, 08 Apr 2025 05:49:02 +0000 Resent-Message-ID: <handler.77613.B77613.17440912863383 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 77613 X-GNU-PR-Package: grep X-GNU-PR-Keywords: To: Bruno Haible <bruno@HIDDEN> Cc: 77613 <at> debbugs.gnu.org Received: via spool by 77613-submit <at> debbugs.gnu.org id=B77613.17440912863383 (code B ref 77613); Tue, 08 Apr 2025 05:49:02 +0000 Received: (at 77613) by debbugs.gnu.org; 8 Apr 2025 05:48:06 +0000 Received: from localhost ([127.0.0.1]:58333 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u21oc-0000sU-EE for submit <at> debbugs.gnu.org; Tue, 08 Apr 2025 01:48:06 -0400 Received: from mail-pg1-f177.google.com ([209.85.215.177]:51419) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <meyering@HIDDEN>) id 1u21oa-0000rk-GO for 77613 <at> debbugs.gnu.org; Tue, 08 Apr 2025 01:48:05 -0400 Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-af93cd64ef3so3377791a12.2 for <77613 <at> debbugs.gnu.org>; Mon, 07 Apr 2025 22:48:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744091278; x=1744696078; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tmzf+43Qhudd4QvkpWivtFvpGgki/uwMh1WdTbfbwpk=; b=gzP+Dsv1mvaCpwK//CpgwWbCerSDx+JDPPRzrkDn9aPqfRBJ4NrG0lZJGdXK17E8UO YfId50Xf9ynkrc9s5ee6tQ8u3Y0EnNN2tHs7fPJFp6iI1Wh2N8Gpb/Kh9gqHGjM2hLFE mUv3Gfn7CK1PCyMT1V7p4qtg9WiwmunexOh82DMqHBsQdv2HmQ0JVnT40nK6NYTjilXS WUgTw0LPjCtQPMD2IvlyZ28QhE8ax36M+RiUgYf6qK1TdnXms1OMB+0nZBSllwIAic39 JyMCYuFrbKNsF1s7WWtpijYMq135JulaF1C/nknH1QcJAY8lGUDkLqlpeDEUiAA6CKSN dhwg== X-Gm-Message-State: AOJu0Yyc0DTx0Qx0NxrdN3hpOacxHABp3+ipcQLOx9G1TL9nzwvcgwT5 5dBtKIiDSM9RwZiH3JbUxD42axv4nFSp4MUzG2eXTKQtAvH+bGAKGT0RBIli+dgG9/IE8v7/Zmq xhzMON2r3rmZyIeP9A/PpMzsQDM4= X-Gm-Gg: ASbGncsrff4xWHa0oWHuOEXAfMyy6CrwAkn2a6SIWV+QgJDkT5w2S/ERBdHsr1SfpRu g3YBpcKPYah82HvpvYIJf4VjAyuE2mMNxB1hD6R/6SqiwxMA7kttQ9zO92jutsW3uG2vDv/PZdX 5DxGW0z7l4V9GK2/VRKUAowYu6uK53ZYW6SPHEKXRjfA== X-Google-Smtp-Source: AGHT+IH6i3VSnoEy6KJxblpJUo4IpTV4FNfCusGGf07WgKHmEZcUq8w2vDs/AouqYsLxHtPB9RTuD53T5ftUbjofXAA= X-Received: by 2002:a17:90b:5150:b0:2ea:37b4:5373 with SMTP id 98e67ed59e1d1-306a485efd9mr22246721a91.10.1744091278283; Mon, 07 Apr 2025 22:47:58 -0700 (PDT) MIME-Version: 1.0 References: <m2r024u0pj.fsf@HIDDEN> <3353032.JoGBPyJhv8@nimes> In-Reply-To: <3353032.JoGBPyJhv8@nimes> From: Jim Meyering <jim@HIDDEN> Date: Mon, 7 Apr 2025 22:47:45 -0700 X-Gm-Features: ATxdqUGv3VjV-SoGSP0-pdcORq2CNVKgmKcvYX4vhf08JeRoLBZWYle-HU7WzDk Message-ID: <CA+8g5KHpk6sr1Mdsqb+71T4ZAuFz22ZjA2TY=s8f-LK=HMCeLQ@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000001965f706323de57b" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --0000000000001965f706323de57b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 7, 2025 at 10:34=E2=80=AFAM Bruno Haible via Bug reports for GN= U grep <bug-grep@HIDDEN> wrote: > On > - GNU/Hurd x86_64 from 2024, > - GNU/Hurd i386 from 2023, > I see a test hang: hash-collision-perf. > > On GNU/Hurd x86_64: > > When I interrupted the build, the file 'in' has 5120000 lines, and > find attached the log file of this test. As you can see, the value of > small_ms stays 0 even for larger files. > > By running > $ date; LC_ALL=3DC ../../src/grep --file=3Din empty; date > I can see that the execution times grow like this: > 640000 0.3 sec > 1280000 0.9 sec > 2560000 1.5 sec > 5120000 > 60 sec > > On GNU/Hurd i386, it's similar. Here it's when the file 'in' has > 40960000 lines, that the grep execution hangs. Find attached the > last stack trace I was able to obtain before it hung. > > Regardless how much RAM I give to the machine, there will always > be a point where "grep --file=3Din empty" will take more RAM than > available, and (since Hurd does not have an OOM killer) the machine > then hangs. > > IMO, the correct behaviour would be that 'grep' exits via xalloc_die(), > not that it hangs. > > Whereas on GNU/Linux (in a machine that has the same amount of RAM as > the GNU/Hurd machine): > > $ : > empty > $ seq 640000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > real 0.44s > $ seq 1280000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > real 0.99s > $ seq 2560000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > real 2.22s > $ seq 5120000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > real 4.84s > $ seq 10240000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > real 24.19s > $ seq 20480000 > in; LC_ALL=3DC time ./src/grep --file=3Din empty > Killed > real 24.40s > > Here it was the OOM killer that saved the machine from hanging. > > So, IMO, there are two bugs: > > 1) When the allocation of the kwset takes more memory than available, > 'grep' should exit via xalloc_die(), instead of waiting to be killed > by the OOM killer. > > 2) In the 'hash-collision-perf' unit test: The use of a perl primitive > for measuring the execution time of a child process, that is not > properly ported to GNU/Hurd. Thanks for reporting that! Adding a timeout should resolve this. Expect to push tomorrow: --0000000000001965f706323de57b Content-Type: application/octet-stream; name="gr-Hurd-hang.diff" Content-Disposition: attachment; filename="gr-Hurd-hang.diff" Content-Transfer-Encoding: base64 Content-ID: <f_m982vqjh0> X-Attachment-Id: f_m982vqjh0 RnJvbSAwNzRmODFhMjBjNjNiM2I3YTM4NzczZjExNjBkZGM3MjM3Y2E3NWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcgPG1leWVyaW5nQG1ldGEuY29tPgpEYXRl OiBNb24sIDcgQXByIDIwMjUgMjI6NDI6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIXSB0ZXN0czog aGFzaC1jb2xsaXNpb24tcGVyZjogYXZvaWQgdGVzdCBoYW5nIG9uIEdOVS9IdXJkCgpUaGlzIHRl c3Qgd291bGQgaGFuZyBvbiBHTlUvSHVyZCBiZWNhdXNlIHRoZSBwZXJsIGNvZGUKd2UgdXNlIHRv IG1lYXN1cmUgc3Vic2Vjb25kIGR1cmF0aW9uIGlzbid0IHBvcnRlZCwgYW5kCnRoYXQgbG9vcCB3 b3VsZCBuZXZlciB0ZXJtaW5hdGUuCiogdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZjogQWRkIGEg NS1zZWNvbmQgdGltZW91dC4KTm9ybWFsIHBlci1pdGVyYXRpb24gZHVyYXRpb24gaXMgMjAwbXMg b3IgbGVzcy4KUmVwb3J0ZWQgYnkgQnJ1bm8gSGFpYmxlIGluIGh0dHBzOi8vYnVncy5nbnUub3Jn Lzc3NjEzCi0tLQogdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZiB8IDMgKystCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMv aGFzaC1jb2xsaXNpb24tcGVyZiBiL3Rlc3RzL2hhc2gtY29sbGlzaW9uLXBlcmYKaW5kZXggYjlh NWI1MS4uMTdlYzZmNyAxMDA3NTUKLS0tIGEvdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZgorKysg Yi90ZXN0cy9oYXNoLWNvbGxpc2lvbi1wZXJmCkBAIC0yMiw2ICsyMiw3IEBACiBmYWlsPTAKCiBy ZXF1aXJlX3BlcmxfCityZXF1aXJlX3RpbWVvdXRfCgogOiA+IGVtcHR5IHx8IGZyYW1ld29ya19m YWlsdXJlXwoKQEAgLTM5LDcgKzQwLDcgQEAgZG9uZQogIyBOb3csIHNlYXJjaCBmb3IgdGhvc2Ug c2FtZSBkaWdpdHMgbWFwcGVkIHRvIEEtSi4KICMgV2l0aCB0aGUgUEpXLWJhc2VkIGhhc2ggZnVu Y3Rpb24sIHRoaXMgYmVjYW1lIE8oTl4yKS4KIHNlcSAkbl9wYXQgfCB0ciAwLTkgQS1KID4gaW4g fHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi1sYXJnZV9tcz0kKExDX0FMTD1DIHVzZXJfdGltZV8gMSBn cmVwIC0tZmlsZT1pbiBlbXB0eSkgfHwgZmFpbD0xCitsYXJnZV9tcz0kKExDX0FMTD1DIHVzZXJf dGltZV8gMSB0aW1lb3V0IDUgZ3JlcCAtLWZpbGU9aW4gZW1wdHkpIHx8IGZhaWw9MQoKICMgRGVs aWJlcmF0ZWx5IHJlY29yZGluZyBpbiBhbiB1bnVzZWQgdmFyaWFibGUgc28gaXQKICMgc2hvd3Mg dXAgaW4gc2V0IC14IG91dHB1dCwgaW4gY2FzZSB0aGlzIHRlc3QgZmFpbHMuCi0tIAoyLjQ5LjAu MTU0Lmc5ZDIyYWM1MTIyCgo= --0000000000001965f706323de57b--
X-Loop: help-debbugs@HIDDEN Subject: bug#77613: grep-3.11.69-a4628 on GNU/Hurd Resent-From: Bruno Haible <bruno@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-grep@HIDDEN Resent-Date: Tue, 08 Apr 2025 07:55:01 +0000 Resent-Message-ID: <handler.77613.B77613.17440988807937 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 77613 X-GNU-PR-Package: grep X-GNU-PR-Keywords: To: Jim Meyering <jim@HIDDEN> Cc: 77613 <at> debbugs.gnu.org Received: via spool by 77613-submit <at> debbugs.gnu.org id=B77613.17440988807937 (code B ref 77613); Tue, 08 Apr 2025 07:55:01 +0000 Received: (at 77613) by debbugs.gnu.org; 8 Apr 2025 07:54:40 +0000 Received: from localhost ([127.0.0.1]:58801 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u23n5-00023t-VX for submit <at> debbugs.gnu.org; Tue, 08 Apr 2025 03:54:40 -0400 Received: from mo4-p00-ob.smtp.rzone.de ([85.215.255.22]:37239) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <bruno@HIDDEN>) id 1u23n2-00023X-Qv for 77613 <at> debbugs.gnu.org; Tue, 08 Apr 2025 03:54:38 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1744098873; cv=none; d=strato.com; s=strato-dkim-0002; b=YuZCBfkZSBw9PlGU2DhmerGh6djOAX6trUQdMfW0HKOvJ/9exvEwEx7o8kLbJHZABv LDowxZcIIqqMx5v17kc7EHcctzrJz7b2+lVujobhkDsF4XCbNhwMsMbiOTwlOj26EU6J dY7yrulYngvlRm0uJ2qQwTOg6782T4086aRHwHYN9SRvmCIApCbzhLxNGWhI0Fzbv4SF WOC2S6Jpnw0wIxSofW5+h+mCOc1yP6kP+DvTXAtxhqXqBiShGMObRysQJr1Tl7FodxX2 /gcPYzFU446cCKKQZMq1Ia4kK8+2FWoK1cr6YmxFoPe5QZL882xJGdUlHGVN7OkZfQIb mJ1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1744098873; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=qIArQqsllpb5nsmvKz8TmUeVsR22kTWEqaO+yDLNtPk=; b=FY1CZaZg8c7w7ISiDuQOJaHml4QNMSVBYVA8MjdR0lXL8qraE8Jt7ZdTg2qNHbw6Y3 ax3E3t9nKY5TFDwiycjWy0xG1QaCZ49IPavFsk+e+Uph8jA7TxgsyCrHMHa+IqM2Q2rO rGPDVi33emHXqwlcHkPieB6/T3r0MiNiJzxqHLY5cxI26ZCLgj2fL/JZLwA4+41AZzK+ 7+RaDF4aJQAojgj0wCNLe8LIT9mKJKDqm7u7RVrsv86sbn5MUIK6by/kh8/yvtWbX3wM hpfD+V428HJuLCaOLqv7I3Z5wsGmJmhWDlzDeB4YQdjnU3iSudTqv7JDC6ET1jdL8wM8 grog== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1744098873; s=strato-dkim-0002; d=clisp.org; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=qIArQqsllpb5nsmvKz8TmUeVsR22kTWEqaO+yDLNtPk=; b=RCiiibF+IiZ04+vQABYp6gjpKQxR3zlH3JctgtfT+8YJ3Fb1WSEOFtNdIA051z85ZJ j9krXeU63JnShVyvKdbQ64lVwCJpjHHbomFfVElTk9DRE6j5Ej/ABi/l+nJqVBrhwd2B 32zQ9XPCi+fHyau5gG+XjeJJxwEiXetxpjbV2zcqpUBdlHjtMaLmFIBNlg0ihBoy54O9 slZ9lJLzjbqBcmlLdu6/TM7naePoesTMwCFnRDlAbKWym6K6WU69z+9Z3zJd4/hpSWeg ALRC7qzFkadPGSzkuqPCAkS2odQQKz2aUD4fRp/rzcOmO+ZKnbsVN0wXF8XBVrJOy1wu +EHA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1744098873; s=strato-dkim-0003; d=clisp.org; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=qIArQqsllpb5nsmvKz8TmUeVsR22kTWEqaO+yDLNtPk=; b=vUq4g/lK8ky2cVlK6Nmufs2CAHuIj/xFe96Cgllw++SqTpNfWhKrOo/3OoLZScEgkQ aSOVFjMj+u9EbndEWICA== X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlLnY4jECd2hdUURIbZgL8PX2QiTuZ3cdB8X/nqmmcFTvhkvcyS6W4Yb9/mO9QBnQI" Received: from nimes.localnet by smtp.strato.de (RZmta 51.3.0 AUTH) with ESMTPSA id N7dcf81387sXQ6K (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Tue, 8 Apr 2025 09:54:33 +0200 (CEST) From: Bruno Haible <bruno@HIDDEN> Date: Tue, 08 Apr 2025 09:54:33 +0200 Message-ID: <2047803.NnIJQXNAa5@nimes> Organization: GNU In-Reply-To: <CA+8g5KHpk6sr1Mdsqb+71T4ZAuFz22ZjA2TY=s8f-LK=HMCeLQ@HIDDEN> References: <m2r024u0pj.fsf@HIDDEN> <3353032.JoGBPyJhv8@nimes> <CA+8g5KHpk6sr1Mdsqb+71T4ZAuFz22ZjA2TY=s8f-LK=HMCeLQ@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart2114479.o4kTbAZ4gJ" Content-Transfer-Encoding: 7Bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --nextPart2114479.o4kTbAZ4gJ Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Hi Jim, > > So, IMO, there are two bugs: > > > > 1) When the allocation of the kwset takes more memory than available, > > 'grep' should exit via xalloc_die(), instead of waiting to be killed > > by the OOM killer. > > > > 2) In the 'hash-collision-perf' unit test: The use of a perl primitive > > for measuring the execution time of a child process, that is not > > properly ported to GNU/Hurd. > > Thanks for reporting that! > Adding a timeout should resolve this. Expect to push tomorrow: No, it does not resolve the problem. In both of my Hurd machines, with the patch, the 'hash-collision-perf' unit test is still running after 20 minutes. In the Hurd (32-bit) machine, a 'grep --file=in empty' command crashed from signal 6 (SIGABRT); see attached screenshot. Both machines are unresponsive and need to be rebooted. --nextPart2114479.o4kTbAZ4gJ Content-Disposition: inline; filename="hurd-hang.png" Content-Transfer-Encoding: base64 Content-Type: image/png; name="hurd-hang.png" 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 --nextPart2114479.o4kTbAZ4gJ--
X-Loop: help-debbugs@HIDDEN Subject: bug#77613: grep-3.11.69-a4628 on GNU/Hurd Resent-From: Jim Meyering <jim@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-grep@HIDDEN Resent-Date: Tue, 08 Apr 2025 14:28:02 +0000 Resent-Message-ID: <handler.77613.B77613.174412242525643 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 77613 X-GNU-PR-Package: grep X-GNU-PR-Keywords: To: Bruno Haible <bruno@HIDDEN> Cc: 77613 <at> debbugs.gnu.org Received: via spool by 77613-submit <at> debbugs.gnu.org id=B77613.174412242525643 (code B ref 77613); Tue, 08 Apr 2025 14:28:02 +0000 Received: (at 77613) by debbugs.gnu.org; 8 Apr 2025 14:27:05 +0000 Received: from localhost ([127.0.0.1]:34371 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1u29ur-0006fX-2p for submit <at> debbugs.gnu.org; Tue, 08 Apr 2025 10:27:05 -0400 Received: from mail-pj1-f47.google.com ([209.85.216.47]:58742) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <meyering@HIDDEN>) id 1u29un-0006eT-9V for 77613 <at> debbugs.gnu.org; Tue, 08 Apr 2025 10:27:02 -0400 Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-2ff799d99dcso5362100a91.1 for <77613 <at> debbugs.gnu.org>; Tue, 08 Apr 2025 07:27:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744122414; x=1744727214; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5uKS+StvrNbgSGiAltpdmB3MbGNzG9Wfq85K7GVB3L4=; b=LNNhxK95q99x80k9Ut0TEfogoqLqKPuP7MUElPVopL4ypw7n3wy5CZhtTY69u5ATJU sUFo8gE5JlNf7ClPxAYiNFIFFpBvFYnykp0fT/nPv1w3yUG68xSgh0swaT6I8d123Fy2 OELcFgZj8G+8Zh3+LUgvrdFqSSH4ITz5AftTibV/IF09eR7ZCMR1/8X5MqU0Xl2gbVPU NWqVYdDE0RS61X9TPmBO3eBMwQl4x8xVRr73X5cts8k733PZofhDnSeauMe/3qZx6U7O 5iiOiRmDBhezoM6upCsDpjt8c6C1qe4h3aUiNX17oS4MgCLtCkpsQNzZQzphUi7+YEiu UaUw== X-Gm-Message-State: AOJu0YznXuxylxFXkB97aBRHfze0DEvOtM5TeKBGSLfjd+VhZMgRkdFu oKyepPuPUf8MDsynPwlHugcDCP35PHq0DCkYexupDurvczx25THStkguzXmvN4mjSrAW5xfYQFa a4IWbCgmPVnpbH1aOO5VPdc1/+450wg== X-Gm-Gg: ASbGncu9i+RzBN2YOqoyUeQ/zgIzcTyyRupRMecJ+dAk+37u5wZ15y7fYbcXYStbiKp 3SSQj31AIQmIC/EmbiZZbXWScDSgZ7YVAcaqSasxbOOzooKwZZjv2RZtSNr0lO6ymIWn5xyeLbD PhfWBUZf6NifA+09U5SWItA3wwQwIftYfAOu0UDldaXQ== X-Google-Smtp-Source: AGHT+IHD8kUd73DsOGHzTQOOe793kReZm6Fgb23KETCCJYEYWjRFMaILa7GWSNOIXuksd+OvCVOXvItArlCwP5wSMok= X-Received: by 2002:a17:90b:51cc:b0:2fc:3264:3657 with SMTP id 98e67ed59e1d1-306a601d9e8mr28362245a91.0.1744122413734; Tue, 08 Apr 2025 07:26:53 -0700 (PDT) MIME-Version: 1.0 References: <m2r024u0pj.fsf@HIDDEN> <3353032.JoGBPyJhv8@nimes> <CA+8g5KHpk6sr1Mdsqb+71T4ZAuFz22ZjA2TY=s8f-LK=HMCeLQ@HIDDEN> <2047803.NnIJQXNAa5@nimes> In-Reply-To: <2047803.NnIJQXNAa5@nimes> From: Jim Meyering <jim@HIDDEN> Date: Tue, 8 Apr 2025 07:26:40 -0700 X-Gm-Features: ATxdqUFK-ophP1DcQJFMbDFNvUwVOS5vBCRWKYCXOiCyMFKN4NLAmgTBvNl7DRw Message-ID: <CA+8g5KGw9Tm5x2rFvv+EE+vY6=b-2yPVuZ+QTwyadf0DgMK0Lg@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000eaa22906324524ea" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --000000000000eaa22906324524ea Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 8, 2025 at 12:54=E2=80=AFAM Bruno Haible <bruno@HIDDEN> wrot= e: > Hi Jim, > > > > So, IMO, there are two bugs: > > > > > > 1) When the allocation of the kwset takes more memory than availabl= e, > > > 'grep' should exit via xalloc_die(), instead of waiting to be ki= lled > > > by the OOM killer. > > > > > > 2) In the 'hash-collision-perf' unit test: The use of a perl primit= ive > > > for measuring the execution time of a child process, that is not > > > properly ported to GNU/Hurd. > > > > Thanks for reporting that! > > Adding a timeout should resolve this. Expect to push tomorrow: > > No, it does not resolve the problem. > > In both of my Hurd machines, with the patch, the 'hash-collision-perf' > unit test is still running after 20 minutes. > In the Hurd (32-bit) machine, a 'grep --file=3Din empty' command crashed = from > signal 6 (SIGABRT); see attached screenshot. > Both machines are unresponsive and need to be rebooted. Oh! Sorry. I made only the final invocation use the timeout. Must use it in the loop, too. Here's a better patch: --000000000000eaa22906324524ea Content-Type: application/octet-stream; name="gr-Hurd-hang.diff" Content-Disposition: attachment; filename="gr-Hurd-hang.diff" Content-Transfer-Encoding: base64 Content-ID: <f_m98lftyv0> X-Attachment-Id: f_m98lftyv0 RnJvbSA4ZDU0MTc2YzBhMzQ1OTU1ZjYzMDc3OGZhNDgyNjlkMWYzZmY3Y2E4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWV5ZXJpbmcgPG1leWVyaW5nQG1ldGEuY29tPgpEYXRl OiBNb24sIDcgQXByIDIwMjUgMjI6NDI6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIXSB0ZXN0czog aGFzaC1jb2xsaXNpb24tcGVyZjogYXZvaWQgdGVzdCBoYW5nIG9uIEdOVS9IdXJkCgpUaGlzIHRl c3Qgd291bGQgaGFuZyBvbiBHTlUvSHVyZCBiZWNhdXNlIHRoZSBwZXJsIGNvZGUKd2UgdXNlIHRv IG1lYXN1cmUgc3Vic2Vjb25kIGR1cmF0aW9uIGlzbid0IHBvcnRlZCwgYW5kCnRoYXQgbG9vcCB3 b3VsZCBuZXZlciB0ZXJtaW5hdGUuCiogdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZjogQWRkIGEg NS1zZWNvbmQgdGltZW91dC4KTm9ybWFsIHBlci1pdGVyYXRpb24gZHVyYXRpb24gaXMgMjAwbXMg b3IgbGVzcy4KUmVwb3J0ZWQgYnkgQnJ1bm8gSGFpYmxlIGluIGh0dHBzOi8vYnVncy5nbnUub3Jn Lzc3NjEzCi0tLQogdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZiB8IDUgKysrLS0KIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVz dHMvaGFzaC1jb2xsaXNpb24tcGVyZiBiL3Rlc3RzL2hhc2gtY29sbGlzaW9uLXBlcmYKaW5kZXgg YjlhNWI1MS4uZDg0YjkzOSAxMDA3NTUKLS0tIGEvdGVzdHMvaGFzaC1jb2xsaXNpb24tcGVyZgor KysgYi90ZXN0cy9oYXNoLWNvbGxpc2lvbi1wZXJmCkBAIC0yMiw2ICsyMiw3IEBACiBmYWlsPTAK CiByZXF1aXJlX3BlcmxfCityZXF1aXJlX3RpbWVvdXRfCgogOiA+IGVtcHR5IHx8IGZyYW1ld29y a19mYWlsdXJlXwoKQEAgLTMxLDcgKzMyLDcgQEAgcmVxdWlyZV9wZXJsXwogbl9wYXQ9NDAwMDAK IHdoaWxlIDo7IGRvCiAgIHNlcSAkbl9wYXQgPiBpbiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSAg c21hbGxfbXM9JChMQ19BTEw9QyB1c2VyX3RpbWVfIDEgZ3JlcCAtLWZpbGU9aW4gZW1wdHkpIHx8 IGZhaWw9MQorICBzbWFsbF9tcz0kKExDX0FMTD1DIHVzZXJfdGltZV8gMSB0aW1lb3V0IDUgZ3Jl cCAtLWZpbGU9aW4gZW1wdHkpIHx8IGZhaWw9MQogICB0ZXN0ICRzbWFsbF9tcyAtZ2UgMjAwICYm IGJyZWFrCiAgIG5fcGF0PSQoZXhwciAkbl9wYXQgJyonIDIpCiBkb25lCkBAIC0zOSw3ICs0MCw3 IEBAIGRvbmUKICMgTm93LCBzZWFyY2ggZm9yIHRob3NlIHNhbWUgZGlnaXRzIG1hcHBlZCB0byBB LUouCiAjIFdpdGggdGhlIFBKVy1iYXNlZCBoYXNoIGZ1bmN0aW9uLCB0aGlzIGJlY2FtZSBPKE5e MikuCiBzZXEgJG5fcGF0IHwgdHIgMC05IEEtSiA+IGluIHx8IGZyYW1ld29ya19mYWlsdXJlXwot bGFyZ2VfbXM9JChMQ19BTEw9QyB1c2VyX3RpbWVfIDEgZ3JlcCAtLWZpbGU9aW4gZW1wdHkpIHx8 IGZhaWw9MQorbGFyZ2VfbXM9JChMQ19BTEw9QyB1c2VyX3RpbWVfIDEgdGltZW91dCA1IGdyZXAg LS1maWxlPWluIGVtcHR5KSB8fCBmYWlsPTEKCiAjIERlbGliZXJhdGVseSByZWNvcmRpbmcgaW4g YW4gdW51c2VkIHZhcmlhYmxlIHNvIGl0CiAjIHNob3dzIHVwIGluIHNldCAteCBvdXRwdXQsIGlu IGNhc2UgdGhpcyB0ZXN0IGZhaWxzLgotLSAKMi40OS4wLjE1NC5nOWQyMmFjNTEyMgoK --000000000000eaa22906324524ea--
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.