From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Bsq2OYZdi2oybDoAWB0awg (envelope-from ) for ; Sun, 23 Aug 2026 16:52:22 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=o2.pl header.i=@o2.pl header.a=rsa-sha256 header.s=20241105 header.b=eGMCZgqD; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id D70501E0A3; Sun, 23 Aug 2026 16:52:22 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 698531E09B for ; Sun, 23 Aug 2026 16:52:21 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3A7624BA7983 for ; Sun, 23 Aug 2026 20:52:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3A7624BA7983 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=o2.pl header.i=@o2.pl header.a=rsa-sha256 header.s=20241105 header.b=eGMCZgqD Received: from mx-out.tlen.pl (mx-out.tlen.pl [193.222.135.175]) by sourceware.org (Postfix) with ESMTPS id 1B7744BA23FE for ; Sun, 23 Aug 2026 20:50:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1B7744BA23FE Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=o2.pl Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=o2.pl ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1B7744BA23FE Authentication-Results: sourceware.org; arc=none smtp.remote-ip=193.222.135.175 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1787518243; cv=none; b=EoqNTUJ5F1uZrFAXsuWoyTtBjupyPPMlmuCdhksKrdTKbCjB5Pizx/b3I5Q9SQGPb0PLxyJ5TtN9YpS6LwLQpC/DDWMnGkGptGG/LeKw2VoiAz73f0yY2jhEd2rgBH283m0MCdxH+VkSkLAeEhYvelA3Zl16BBR6iOE5scHUSS4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1787518243; c=relaxed/simple; bh=UFzdBVhllqcJMZMJmZYaZFIas2Wj8UMV8uDNEDYSlV0=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=K1OEzpAkjzrbsU6A5Z6/vZgDSZfeQAW7T3Wfn0aO/5HSjEihvDa2VxtQBIcKAYu+iD4YgX5AQ9LnJ1c/9dyLM/Gk+X0LpPft0Kmp92sewNDqIaEYbcoGXCLbzJXspyGx6mp4v9nWy8lnN9fuChOPG8NO8aXl4SSGnqvHxYcRhag= ARC-Authentication-Results: i=1; sourceware.org Received: (wp-smtpd smtp.tlen.pl 44998 invoked from network); 23 Aug 2026 22:50:38 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=o2.pl; s=20241105; t=1787518239; bh=PqNwllEH2pKsG0JIR1rlKgoNZOY2us8DHb3XUQFe1EA=; h=Subject:To:Cc:From; b=eGMCZgqD8DUdPuUzWxO/A23Ndh1IC7nz/Zt3sMzdbY6uxUyEDYhX78Ir24nnZ/BDf Drrw274/iaWRFYbmqBMKL2H1OiWxeBD5MvKHEXtd7hsS4iy00ibD/WbRNv9+ABV4mC IVfYm34Lg/dEnrXIuutxL9AEWTy0dq0fBU4hdNeB8lz/Qa/C9nEBcVyWucMf20nIBU NQApMESTPDFYic1Tus2FuzIdypFzPgRgE/jGFFXCgwFdC0qFntKG1JL+Hc9M7NXcs4 KniKzpeALbAo29OlL+mQ1703CDjq4c+npqy4urRtOw5f610TkkaV2r5KLCsvORpAJ4 ONQEl2HGtRItw== Received: from [192.168.0.1] (ip-94-42-230-181.multimo.pl [94.42.230.181]) (envelope-sender ) by smtp.tlen.pl (WP-SMTPD) with TLS_AES_256_GCM_SHA384 encrypted SMTP for ; 23 Aug 2026 22:50:38 +0200 Content-Type: multipart/mixed; boundary="------------B00x0yoHXajOG3Lr6xIz2Hrb" Message-ID: Date: Sun, 23 Aug 2026 22:50:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] H8/300: sim: Fix simulator hang caused by qsort on Windows/MinGW. To: gdb-patches@sourceware.org Cc: Jeffrey Law References: <20260822110423.1569154-1-jdx@o2.pl> Content-Language: pl From: Jan Dubiec In-Reply-To: <20260822110423.1569154-1-jdx@o2.pl> X-WP-MailID: 0b3b5dafd30fa1ce10d8ef00387e7293 X-WP-AV: skaner antywirusowy Poczty o2 X-WP-SPAM: NO 0000000 [MeMs] X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org This is a multi-part message in MIME format. --------------B00x0yoHXajOG3Lr6xIz2Hrb Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 22.08.2026 13:02, Jan Dubiec wrote: > See the comment below. I don't know why qsort behaves so strangely. It > could be a bug, or simply a consequence of its being an unstable sort. > Unfortunately, I don't have time to investigate the root cause. OK, I did some testing that shows that Microsoft's implementation of qsort() uses an unstable sorting algorithm, i.e. the order of equal elements may change. See the attached program. It compares insertion sort, which is a stable algorithm, with qsort(). The test fails on Windows and passes on Linux. The compiler is irrelevant — both Microsoft's compiler and GCC from MinGW produce the same result. It's worth noting that although the test passes on Linux, this is not guaranteed. According to AI, the qsort() implementation in glibc generally uses merge sort (stable), but may fall back to heapsort (unstable), depending on the size of the data. The glibc documentation seems to confirm this — it clearly states that "If two elements compare equal, their order after sorting is unpredictable": https://sourceware.org/glibc/manual/2.44/html_node/Array-Sort-Function.html So I think the best solution is to use a sorting algorithm known to be stable on every host, e.g. the insertion sort implementation from my previous message. What do you think? /J.D. --------------B00x0yoHXajOG3Lr6xIz2Hrb Content-Type: text/plain; charset=UTF-8; name="qsort_test.c" Content-Disposition: attachment; filename="qsort_test.c" Content-Transfer-Encoding: base64 LyoNCiAqIENvbXBpbGUgY29tbWFkOiBnY2MgLU8yIC1zIC1vIHFzb3J0X3Rlc3QuZXhlIHFz b3J0X3Rlc3QuYw0KICogb3IgICAgICAgICAgICAgIGNsIC9PMiAvRmU6cXNvcnRfdGVzdC5l eGUgcXNvcnRfdGVzdC5jDQogKiBVc2FnZTogcXNvcnRfdGVzdC5leGUgWy1kXQ0KICogICAt ZCAtIGR1bXAgdGFibGVzIHRvIHN0ZG91dA0KICovDQoNCiNpbmNsdWRlIDxzdGRpby5oPg0K I2luY2x1ZGUgPHN0cmluZy5oPg0KI2luY2x1ZGUgPHN0ZGxpYi5oPg0KDQojZGVmaW5lIFRB QkxFU0laRSA1DQoNCnR5cGVkZWYgc3RydWN0IHsNCglpbnQgZjE7DQoJaW50IGYyOw0KCWlu dCBmMzsNCn0gZWxlbWVudF90eXBlOw0KDQpzdGF0aWMgaW50DQplbGVtZW50X2NvbXBhcmF0 b3IgKGNvbnN0IHZvaWQgKmVsMSwgY29uc3Qgdm9pZCAqZWwyKQ0Kew0KCWVsZW1lbnRfdHlw ZSAqcDEgPSAoZWxlbWVudF90eXBlKikgZWwxOw0KCWVsZW1lbnRfdHlwZSAqcDIgPSAoZWxl bWVudF90eXBlKikgZWwyOw0KDQoJLyogT25seSBmMSBhbmQgZjIgYXJlIHVzZWQgYXMgc29y dCBrZXlzOyBmMyBpcyBpcnJlbGV2YW50LiAqLw0KCWlmIChwMS0+ZjEgIT0gcDItPmYxKQ0K CQlyZXR1cm4gKHAxLT5mMSA+IHAyLT5mMSkgLSAocDEtPmYxIDwgcDItPmYxKTsNCg0KCWlm IChwMS0+ZjIgIT0gcDItPmYyKQ0KCQlyZXR1cm4gKHAxLT5mMiA+IHAyLT5mMikgLSAocDEt PmYyIDwgcDItPmYyKTsNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0aWMgdm9pZA0KaW5zZXJ0 aW9uX3NvcnQodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwNCgkJCQlp bnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkNCnsNCgl1bnNpZ25l ZCBjaGFyICphID0gYmFzZTsNCgl1bnNpZ25lZCBjaGFyICp0bXA7DQoJc2l6ZV90IGksIGo7 DQoNCglpZiAobm1lbWIgPCAyIHx8IHNpemUgPT0gMCkNCgkJcmV0dXJuOw0KDQoJdG1wID0g bWFsbG9jKHNpemUpOw0KCWlmICh0bXAgPT0gTlVMTCkNCgkJcmV0dXJuOw0KDQoJZm9yIChp ID0gMTsgaSA8IG5tZW1iOyArK2kpIHsNCgkJbWVtY3B5KHRtcCwgYSArIGkgKiBzaXplLCBz aXplKTsNCg0KCQlqID0gaTsNCgkJd2hpbGUgKGogPiAwICYmIGNvbXBhcih0bXAsIGEgKyAo aiAtIDEpICogc2l6ZSkgPCAwKSB7DQoJCQltZW1jcHkoYSArIGogKiBzaXplLCBhICsgKGog LSAxKSAqIHNpemUsIHNpemUpOw0KCQkJLS1qOw0KCQl9DQoNCgkJbWVtY3B5KGEgKyBqICog c2l6ZSwgdG1wLCBzaXplKTsNCgl9DQoNCglmcmVlKHRtcCk7DQp9DQoNCmludCBtYWluIChp bnQgYXJnYywgY2hhciAqYXJndltdKQ0Kew0KCWVsZW1lbnRfdHlwZSB0MFtUQUJMRVNJWkVd ID0gew0KCQl7MCwgMCwgMTB9LCB7NywgNywgMTB9LCB7NSwgNSwgMTB9LCB7NywgNywgNX0s IHswLCAwLCAxMX0NCgl9Ow0KCWVsZW1lbnRfdHlwZSB0MVtUQUJMRVNJWkVdLCB0MltUQUJM RVNJWkVdOw0KCXNpemVfdCBpOw0KDQoJbWVtY3B5KHQxLCB0MCwgVEFCTEVTSVpFKnNpemVv ZihlbGVtZW50X3R5cGUpKTsNCgltZW1jcHkodDIsIHQwLCBUQUJMRVNJWkUqc2l6ZW9mKGVs ZW1lbnRfdHlwZSkpOw0KDQoJaW5zZXJ0aW9uX3NvcnQodDEsIFRBQkxFU0laRSwgc2l6ZW9m KGVsZW1lbnRfdHlwZSksIGVsZW1lbnRfY29tcGFyYXRvcik7DQoJcXNvcnQodDIsIFRBQkxF U0laRSwgc2l6ZW9mKGVsZW1lbnRfdHlwZSksIGVsZW1lbnRfY29tcGFyYXRvcik7DQoNCgkv KiBEdW1wIHRhYmxlcyB0byBzdGRvdXQgKi8NCglpZiAoYXJnYyA+IDEgJiYgYXJndlsxXVsw XSA9PSAnLScgJiYgYXJndlsxXVsxXSA9PSAnZCcpIHsNCgkJZm9yIChpID0gMDsgaSA8IFRB QkxFU0laRTsgKytpKSB7DQoJCQlwcmludGYoInQwWyV6dV06XHQlZFx0JWRcdCVkXG4iLCBp LCB0MFtpXS5mMSwgdDBbaV0uZjIsIHQwW2ldLmYzKTsNCgkJCXByaW50ZigidDFbJXp1XTpc dCVkXHQlZFx0JWRcbiIsIGksIHQxW2ldLmYxLCB0MVtpXS5mMiwgdDFbaV0uZjMpOw0KCQkJ cHJpbnRmKCJ0MlslenVdOlx0JWRcdCVkXHQlZFxuXG4iLCBpLCB0MltpXS5mMSwgdDJbaV0u ZjIsIHQyW2ldLmYzKTsNCgkJfQ0KCX0NCg0KCWZvciAoaSA9IDA7IGkgPCBUQUJMRVNJWkU7 ICsraSkgew0KCQlpZiAoIG1lbWNtcCgmdDFbaV0sICZ0MltpXSwgc2l6ZW9mKGVsZW1lbnRf dHlwZSkpICkgew0KCQkJcHJpbnRmKCJGaXJzdCBmYWlsIGF0IGVsZW1lbnQgJXp1XG4iLCBp KTsNCgkJCXByaW50ZigiRkFJTFxuIik7DQoJCQlyZXR1cm4gLTE7DQoJCX0NCgl9DQoJcHJp bnRmKCJQQVNTXG4iKTsNCglyZXR1cm4gMDsNCn0NCg== --------------B00x0yoHXajOG3Lr6xIz2Hrb--