`bash` 正在泄漏内存,我应该在哪里报告它?

`bash` is leaking memory, where do I report it?

我有一个超级简单的脚本来确认此行为:

leak.sh

#! /bin/bash
echo "Am I leaking?"

在valgrind下执行...

$ valgrind ./leak.sh 
==1365336== Memcheck, a memory error detector
==1365336== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1365336== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==1365336== Command: ./leak.sh
==1365336== 
Am I leaking?
==1365336== 
==1365336== HEAP SUMMARY:
==1365336==     in use at exit: 50,076 bytes in 766 blocks
==1365336==   total heap usage: 858 allocs, 92 frees, 59,487 bytes allocated
==1365336== 
==1365336== LEAK SUMMARY:
==1365336==    definitely lost: 12 bytes in 1 blocks
==1365336==    indirectly lost: 0 bytes in 0 blocks
==1365336==      possibly lost: 0 bytes in 0 blocks
==1365336==    still reachable: 50,064 bytes in 765 blocks
==1365336==         suppressed: 0 bytes in 0 blocks
==1365336== Rerun with --leak-check=full to see details of leaked memory
==1365336== 
==1365336== For lists of detected and suppressed errors, rerun with: -s
==1365336== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

如果您更改脚本以使用 dash,Pop!_OS 的默认 shell (sh) (我假设所有 Debian 发行版) ,则运行不漏

no_leak.sh

#! /bin/dash
echo "Am I leaking?"
$ valgrind ./no_leak.sh
==1365800== Memcheck, a memory error detector
==1365800== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1365800== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==1365800== Command: ./no_leak.sh
==1365800== 
Am I leaking?
==1365800== 
==1365800== HEAP SUMMARY:
==1365800==     in use at exit: 10,666 bytes in 77 blocks
==1365800==   total heap usage: 80 allocs, 3 frees, 14,809 bytes allocated
==1365800== 
==1365800== LEAK SUMMARY:
==1365800==    definitely lost: 0 bytes in 0 blocks
==1365800==    indirectly lost: 0 bytes in 0 blocks
==1365800==      possibly lost: 0 bytes in 0 blocks
==1365800==    still reachable: 10,666 bytes in 77 blocks
==1365800==         suppressed: 0 bytes in 0 blocks
==1365800== Rerun with --leak-check=full to see details of leaked memory
==1365800== 
==1365800== For lists of detected and suppressed errors, rerun with: -s
==1365800== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

我可以在哪里报告这个观察结果,或者查明它是否已经得到解决?

bash版本

$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

正如 @oguz_ismail 在评论中提到的,bug-bash@gnu.org 是报告错误的合适位置。

但是,当您需要报告错误时,电子邮件的特定格式是 required/requested。

All bug reports should include:

  • The version number of Bash.
  • The hardware and operating system.
  • The compiler used to compile Bash.
  • A description of the bug behaviour.
  • A short script or ‘recipe’ which exercises the bug and may be used to reproduce it.

您可以在以下位置找到所有详细信息: https://www.gnu.org/software/bash/manual/html_node/Reporting-Bugs.html

最后,bash 本身内置了一个帮助脚本。从命令行调用 bashbug,它将填充大部分要求,让您填写描述和重现错误所需的步骤。

$ bashbug

GNU nano 5.2                                                               /tmp/bbug.1414628/bbug1                                                                          
From: zak
To: bug-bash@gnu.org
Subject: [50 character or so descriptive subject here (for reference)]

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/bash-SmNvvg/bash-5.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wno-parentheses -Wno-format-secu>
uname output: Linux pop-os 5.11.0-7614-generic #15~1618626693~20.10~ecb25cd-Ubuntu SMP Thu Apr 22 16:00:45 UTC  x86_64 x86_64 x86_64 GNU/Linux
...

填写模板后,系统会提示您是否要发送电子邮件。如果您没有连接电子邮件客户端也没关系,它会将完成的表格存储在 ~/dead.bashbug,您可以将其复制粘贴到您的电子邮件客户端。