Front page | perl.perl5.porters |
Postings from January 2022
Re: Broken stack traces from use statements.
Thread Previous
|
Thread Next
From:
Leon Timmermans
Date:
January 15, 2022 13:27
Subject:
Re: Broken stack traces from use statements.
Message ID:
CAHhgV8gpXO9qtQYxSo8WxUXyeSVh7F=Omo5fKPoqJ2f8+9giLA@mail.gmail.com
On Sat, Jan 15, 2022 at 8:22 AM demerphq <demerphq@gmail.com> wrote:
> On Sat, 15 Jan 2022 at 07:06, demerphq <demerphq@gmail.com> wrote:
>
>> On Sat, 15 Jan 2022 at 05:18, Leon Timmermans <fawaka@gmail.com> wrote:
>>
>>> On Fri, Jan 14, 2022 at 5:44 PM Leon Timmermans <fawaka@gmail.com>
>>> wrote:
>>>
>>>> On Fri, Jan 14, 2022 at 4:59 PM Ovid <curtis_ovid_poe@yahoo.com> wrote:
>>>>
>>>>> On Friday, 14 January 2022, 15:54:27 CET, Leon Timmermans <
>>>>> fawaka@gmail.com> wrote:
>>>>>
>>>>> > > But those assumptions are basically broken, so I'm not sure your
>>>>> point. Classic case of GIGO.
>>>>> >
>>>>> > It's not broken if it gets the job done, is it?
>>>>>
>>>>> > I agree with you that the new behavior is far more usable than the
>>>>> older behavior, but that doesn't
>>>>> > mean people haven't put the old behavior to use.
>>>>>
>>>>> I think the old behavior kind of worked because generally, stack
>>>>> traces work. It appears to be the use/require case which is problematic.
>>>>>
>>>>> However, in the use/require case, if the apparently pseudo-random
>>>>> ordering is deterministic, on my machine the first stack frame grabbed
>>>>> happens to be correct. If that holds (pretty sure it must), then for the
>>>>> 'import' case where you're trying to figure out where you're exporting to,
>>>>> you're going to export those functions to the right spot. It's when you hit
>>>>> stack traces that it becomes an unusable mess.
>>>>>
>>>>> As it stands:
>>>>>
>>>>> * The stack trace is clearly incorrect
>>>>> * That makes it useless for debugging
>>>>> * When you're working on a *huge* system and get those traces, it's
>>>>> miserable
>>>>>
>>>>> Given that, I suspect the most useful discussions are about *how* to
>>>>> fix it and/or *when* to fix it.
>>>>>
>>>>
>>>> "How to fix it" probably includes people stepping up to deal with the
>>>> fallout. IME the most useful thing proponents of this change could do is
>>>> actually write patches for the 3 known affected modules. I don't really
>>>> understand how that hasn't happened yet in the past two years.
>>>>
>>>
>>> I think I just did that for DBIx::Class.
>>>
>>>
>> Thanks, although I feel it is worth noting that this was not a fix to
>> DBIx::Class and the patch never broke DBIx::Class, it was the tests for
>> DBIx::Class that were broken only.
>>
>> I have looked at the other two cases and as far as I can tell Dave M did
> actually dig into them and fix them. They are in the thread here:
>
> https://github.com/Perl/perl5/issues/17663
>
> BTW, in that thread you said: "This ticket raises the question «what is
> correctness». The current behavior is truthful, but not intuitive. This
> discussion really seems to be about which of those two values are more
> relevant for correctness."
>
> Consider the following:
>
> ...
>
> So respectfully I would like to know how you can consider such
> contradictory results (eg the same stack frame being attributed to
> different lines of code depending on when caller was called) can be
> truthful, especially given some of the stack frames are BEGIN's which fire
> once and are never fired again, it seems to me that we should be able to
> agree that such a construct should be shown to come from exactly one place,
> and one place alone.
>
As far as I can tell, it's an accurate representation of how the sausage is
made. BEGIN blocks aren't implemented the way one would expect them to, and
these stacktraces represent that. They're not false, just very unhelpful.
Leon
Thread Previous
|
Thread Next