[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: Re: Debugging channel weirdness
From: Zebediah Figura <zfigura () codeweavers ! com>
Date: 2023-02-14 1:07:24
Message-ID: 98f17ade-07e0-52c1-d115-0f185253cc88 () codeweavers ! com
[Download RAW message or body]
On 2/10/23 13:36, Rémi Bernon wrote:
> On 2/10/23 20:04, Rémi Bernon wrote:
>> On 2/10/23 19:12, Zebediah Figura wrote:
>>> On 2/10/23 00:18, Rémi Bernon wrote:
>>>>> (1) Why does setting channel->flags affect performance at all? I'm
>>>>> thoroughly baffled by this one.
>>>>>
>>>>> (2) Why was this diff not applied in the first place? (Simple
>>>>> oversight?)
>>>>>
>>>>> (3) Why does __WINE_DBCL_INIT even exist, if its only purpose is to
>>>>> guard out a single assignment?
>>>>>
>>>>> --Zeb
>>>>>
>>>>
>>>> Probably to allow changing the selected channels dynamically,
>>>> through process monitor for instance.
>>>>
>>>
>>> I'm not sure which question this answers, but I don't think I
>>> understand it? winedbg and taskmgr just set the flags directly; they
>>> don't touch __WINE_DBCL_INIT, and I don't see why they'd need to.
>>>
>>>
>>
>> They can't change the flags in each of the translation units debug
>> channels. What they do is change the debug options in the process PEB.
>>
>> In order to support the runtime modification, the TU debug channels
>> need to keep their __WINE_DBCL_INIT bit set, so
>> __wine_dbg_get_channel_flags is always called, and the debug option
>> updated from the PEB.
>
> Correction, it's actually not __WINE_DBCL_INIT but rather their default
> value, which contains all the bits. The logic is otherwise the same, the
> TU channel bits are only eventually cleared for the default options, for
> the reasons described here.
>
>>
>> Only channels which aren't explicitly specified clear their
>> __WINE_DBCL_INIT bit, after copying the default debug options.
>>
>> The default options (all) cannot be modified dynamically, or at least
>> only takes effect the first time __wine_dbg_get_channel_flags is
>> called for a given TU debug channel.
>>
>
Thank you, that explains why the logic is arranged like it is.
I'm inclined to think we should find another way to achieve this;
spending hours trying to debug a performance drop from disabling logging
channels is really not something I want to happen to anyone else. I'll
see what I can achieve.
This doesn't explain why __WINE_DBCL_INIT exists, but I can only assume
that at this point there's no particularly good reason.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic