X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc; bh=4/wKXmkmgTzlWxBsTJPTwjBizIykz6sFaVVIosdHHDM=; b=TdFgG+AXNzuyKihdCwKscuQt7AZD5SP1wuR/dWE+OtnuI7BM2LbikG9na5B//FJP6d 35hSvkrD3B+IaEeM6dOhphlQbXUNabQLxWmYvefTNGy8FwetqgJjHb7lJVKxTpUFrWX+ sl+m3vfKAf+ci7gIbbeFKA4u8fIiggVlacnw6usw+lSEPczlKjNwk5oB+P0R6JQjOtcM qVsTinRRPDULUB5ZrAaVuiW3CuMHxNM48bzHqppWNSal2pGIr3xbsccI/gta6pLdtqjb p74K4OET2X/GhOVipsBz17fR/B1giwu/+iN2MM62yiro4aRx5Nf6ejTa0t5HTosy3/1S D/1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc; bh=4/wKXmkmgTzlWxBsTJPTwjBizIykz6sFaVVIosdHHDM=; b=7JRzy9z7jggXCHBIVnW6TOwPjVzTPw2Hnt0gaFdwfi+6cYybXqQFQBbhKTiVyFPIbL SUBtNfC1HtxQrH+IeqzKGO1sIAvWreIzIgne6/HWDwQnc9R0J0idF4Mupcf7o46TosJu WdrzyMSO30djC9k10bTlRpror7aSBwTO6w7kqrzRtBa+tUD7qvVL9MyIFg6OTCoRnnSb Rh0W2oQakyxMOoBQ9P9DD20Ehx97m4qEwb/sKp+Kk2ybxP7zIFf5Q9N5J1nP1beXOcZ3 8jLj+Aerw20gaO5Z0AdiUu0RtIZhv8W6SAgMLG8PTb7meKF0FfCApTLPsnwmY/rvsJWd CXWg== X-Gm-Message-State: ACgBeo2TIStSCZeUj7QT4f4pBTIYr30mz/50dL6I1TNWNt1h8s5LDs7j wb7FssQbSyFDUUGcNHzm6NLZlK/AHZblvjiJLMpkqNfDlk8= X-Google-Smtp-Source: AA6agR4AGykRriXRQi365xX9PLbN6svXE3MhGtR103HNSlKKaJqfxPjVVNWYiCKifBFdviZDGuGmxbqG/RrQfmFGhBo= X-Received: by 2002:adf:a1d2:0:b0:21e:bc22:f550 with SMTP id v18-20020adfa1d2000000b0021ebc22f550mr12519477wrv.399.1659424059543; Tue, 02 Aug 2022 00:07:39 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <414f3e66.a1.182565154ec.Coremail.lostxwind@163.com> References: <3c11b033 DOT 75 DOT 182562fe32f DOT Coremail DOT lostxwind AT 163 DOT com> <414f3e66 DOT a1 DOT 182565154ec DOT Coremail DOT lostxwind AT 163 DOT com> From: "Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com]" Date: Tue, 2 Aug 2022 10:07:39 +0300 Message-ID: Subject: Fwd: BUGREPORT: ___dpmi_get_raw_mode_switch_addr() modifies SI register and doesn't save it To: djgpp AT delorie DOT com Content-Type: text/plain; charset="UTF-8" Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk The 'djgpp' mailing list is more active - forwarding this to it: ---------- Forwarded message ---------- From: "lostxwind (lostxwind AT 163 DOT com) [via djgpp-workers AT delorie DOT com]" Date: Mon, 1 Aug 2022 06:12:26 +0800 (CST) Subject: Re:BUGREPORT: ___dpmi_get_raw_mode_switch_addr() modifies SI register and doesn't save it To: djgpp-workers AT delorie DOT com Hi, I was trying to issue a bug report on delorie official site (https://www.delorie.com/djgpp/bugs/create.cgi) but failed as the database is closed. So I tried to contact you through email. BUGREPROT: BACKGROUND: ___dpmi_get_raw_mode_switch_addr() is needed to switch modes for some reason, instead of the __dpmi_simulate_real_mode_* class. SYMPTOM: Random crashes involving switch between real(/v86) mode and protected mode. REASON: I found variables or function parameters corrupted after calling ___dpmi_get_raw_mode_switch_addr(). After reading the source code, I believe that the implementation of ___dpmi_get_raw_mode_switch_addr() has missed a single line that saves the ESI register. src\libc\dpmi\api\d0306.S, line 2-line 4. code before fix: #define USE_EBX #define USE_EDI #include "dpmidefs.h" possible fix: #define USE_EBX #define USE_EDI #define USE_ESI #include "dpmidefs.h" Current workaround without bugfix: Write a alternative implementation; Or wrap the function call with asm that pushl/popl %esi. Thanks, crazii