Wireshark mailing list archives

Re: wslog, windows, pytest, and heap corruption


From: chuck c <bubbasnmp () gmail com>
Date: Thu, 30 Dec 2021 08:54:27 -0600

I opened an issue to upgrade but maybe not in the right place?

https://gitlab.com/wireshark/wireshark-containers/-/issues/5
Update Windows servercore to newer version

On Wed, Dec 29, 2021 at 7:15 PM John Thacker <johnthacker () gmail com> wrote:

I was working on a MR for moving the text2pcap/text_import debug over to
the ws_log features and I ran into a seemingly bizarre problem. Setting the
log level to a non-default value causes the pytest procedures to fail with
heap corruption on the Gitlab Windows CI.

Some of the text2pcap pytests depend on grepping through the stderr output
for some of the debug information. Those tests originally passed the -d
flag to text2pcap, so I replaced it with setting the log level to "debug"
(and later "info") with the standard "--log-level debug" argument read by
ws_log_parse_args().

On Windows (but not Linux or MacOS, not clang or gcc, nor with either
using ASAN), those tests which set the log level (and only those tests)
started failing with a return code of 0xc0000374, heap corruption.

As I looked into it closer, all the debug information that those tests
used ought to be logged at "warning" or "message," which are at the default
log level, so I was able to remove that flag, and then it passed.

It looks like it might be related to some of the things discussed here,
though I'm not 100% sure because I'm not a Windows programmer:

https://discuss.wxpython.org/t/heap-corruption-on-windows/35583
https://bugs.python.org/issue36792
https://bugs.python.org/issue37945

There's some kind of issue seen in Python 3.8 and higher, with Windows 10
build 1809 (which is a long term support build that is what the CI build
server uses), with UTF-8 locales, with log systems that get system locale
information and print dates, the Windows 10 Universal CRT, and heap
corruption.

It might have something to do with the tests spawning a lot of
subprocesses in parallel and setting the log level to a different value
eventually calling free_log_filter() from ws_log_set_debug_filter().

John Thacker
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org
?subject=unsubscribe

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: