X-Recipient: archive-cygwin AT delorie DOT com X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 96993385842E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=t-online.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=t-online.de From: Christian Franke Subject: [PATCH] cygutils-extra 1.4.16-3: cygdrop: Fix crash To: cygwin AT cygwin DOT com Message-ID: <2f5eedb0-b3ec-4c4e-5740-5196e2572dc7@t-online.de> Date: Sat, 14 Aug 2021 15:39:15 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 SeaMonkey/2.53.8.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------5943301D8A0BAF042EC8E242" X-ID: XNt28uZT8heA41igj4gjmkc3JZSm5ivZEaxb3N6LUUx9KBe+Ve5qIE8il2MdSg7Z61 X-TOI-EXPURGATEID: 150726::1628948355-0000454D-71799F73/0/0 CLEAN NORMAL X-TOI-MSGID: 7079d114-0638-4348-acb1-f786fc2198ff X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, BODY_8BITS, FREEMAIL_FROM, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Cygwin" This is a multi-part message in MIME format. --------------5943301D8A0BAF042EC8E242 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Cygdrop from recent cygutils-extra crashes (only) after printing help tex= t: $ cygdrop Usage: cygdrop [OPTIONS] COMMAND [ARG ...] Group options =C2=A0 -l=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Disable local admini= strator group [default] ... =C2=A0 -v=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Verbose output, list= s groups and privileges changed. =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Repea= t to list all groups and privileges. *** stack smashing detected ***: terminated Aborted (core dumped) The root of the problem is a usually harmless bug introduced in 2010. A=20 function return type was declared as 'int' instead of 'void': https://sourceware.org/git/?p=3Dcygwin-apps/cygutils.git;a=3Dcommitdiff;h= =3D517cf61 Newer g++ may then optimize away the function epilogue after inline=20 expansion. Here is a minimal testcase: $ g++ --version g++ (GCC) 10.2.0 ... $ cat test.cc void f(); static int g() { =C2=A0 f(); } void h() { =C2=A0 g(); } $ g++ -S -O test.cc test.cc: In function =E2=80=98int g()=E2=80=99: test.cc:6:1: warning: no return statement in function returning non-void=20 [-Wreturn-type] =C2=A0=C2=A0=C2=A0 6 | } =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | ^ $ c++filt < test.s =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .file=C2=A0=C2=A0 "test.cc" =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .text =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .globl=C2=A0 h() =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .def=C2=A0=C2=A0=C2=A0 h();=C2= =A0=C2=A0=C2=A0 .scl=C2=A0=C2=A0=C2=A0 2;=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .= type=C2=A0=C2=A0 32; .endef =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_proc=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 h() h(): .LFB1: =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 subq=C2=A0=C2=A0=C2=A0 $40, %= rsp =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_stackalloc 40 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_endprologue =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 call=C2=A0=C2=A0=C2=A0 f() =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nop =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_endproc =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .ident=C2=A0 "GCC: (GNU) 10.2= .0" =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .def=C2=A0=C2=A0=C2=A0 f();=C2= =A0=C2=A0=C2=A0 .scl=C2=A0=C2=A0=C2=A0 2;=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .= type=C2=A0=C2=A0 32; .endef Problem and -Wreturn-type do not occur if compiled as a C program: $ g++ -xc -S -O test.cc $ cat test.s ... h: =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 subq=C2=A0=C2=A0=C2=A0 $40, %= rsp =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_stackalloc 40 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_endprologue =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 call=C2=A0=C2=A0=C2=A0 f =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nop =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 addq=C2=A0=C2=A0=C2=A0 $40, %= rsp =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ret =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 .seh_endproc ... The problem also occurs with 32-bit Cygwin g++ and with current=20 MinGW-w64-g++ 32/64-bit. Unfortunately GCC upstream has already set a related bug report to INVALI= D: =C2=A0https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D96181 I disagree... Cygport should possibly add '-Werror=3Dreturn-type' to C++ defaults. Patch for cygutils is attached. Regards, Christian --------------5943301D8A0BAF042EC8E242 Content-Type: text/plain; charset=UTF-8; name="0001-cygdrop-Fix-return-type-of-void-function.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-cygdrop-Fix-return-type-of-void-function.patch" RnJvbSAzMzBlNGM4MDMzZWExN2MzMTI4Njc5MDYwOTIzOTc0MjVkOTc3YzA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RpYW4gRnJhbmtlIDxjaHJpc3RpYW4uZnJh bmtlQHQtb25saW5lLmRlPgpEYXRlOiBTYXQsIDE0IEF1ZyAyMDIxIDE0OjMyOjI1ICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gY3lnZHJvcDogRml4IHJldHVybiB0eXBlIG9mICd2b2lkJyBm dW5jdGlvbi4KClRoaXMgZml4ZXMgYSBjcmFzaCB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBn KysgKEdDQyBCdWd6aWxsYSA5NjE4MSkuCi0tLQogc3JjL2N5Z2Ryb3AvY3lnZHJvcC5jYyB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyYy9jeWdkcm9wL2N5Z2Ryb3AuY2MgYi9zcmMvY3lnZHJvcC9jeWdk cm9wLmNjCmluZGV4IDM1YmNjMTkuLmRjNDAzYzkgMTAwNjQ0Ci0tLSBhL3NyYy9jeWdkcm9w L2N5Z2Ryb3AuY2MKKysrIGIvc3JjL2N5Z2Ryb3AvY3lnZHJvcC5jYwpAQCAtMzksNyArMzks NyBAQCBzdGF0aWMgdm9pZCBoZWxwIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiBz dGF0aWMgdm9pZCB2ZXJzaW9uIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0 aWMgdm9pZCBsaWNlbnNlIChGSUxFICogZiwgY29uc3QgY2hhciAqbmFtZSk7CiAKLXN0YXRp YyBpbnQKK3N0YXRpYyB2b2lkCiB1c2FnZUNvcmUgKEZJTEUgKiBmLCBjb25zdCBjaGFyICog bmFtZSkKIHsKICAgZnByaW50ZiAoZiwKLS0gCjIuMzIuMAoK --------------5943301D8A0BAF042EC8E242 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --------------5943301D8A0BAF042EC8E242--