delorie.com/archives/browse.cgi | search |
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 <Christian DOT Franke AT t-online DOT de> |
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 |
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 <cygwin.cygwin.com> |
List-Archive: | <https://cygwin.com/pipermail/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-request AT cygwin DOT com?subject=help> |
List-Subscribe: | <https://cygwin.com/mailman/listinfo/cygwin>, |
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe> | |
Sender: | "Cygwin" <cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com> |
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--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |