[Toybox] [PATCH] toysh: fix -Wuse-after-free

Oliver Webb aquahobbyist at proton.me
Thu Mar 14 14:45:53 PDT 2024


> Not "I have a problem", but "it IS a problem". Well it's good that you're here
> to define objective reality. Without such a universal arbiter we would all be
> lost a world of opinion and nuance.

It is if you are trying to audit it to understand what it is doing so you
can fix 80 broken test cases. My interests align with the project and I've
already tested "does this matter" by trying to read through sh.c, if you want auditable code
(The type someone could read through and fix bugs in) This seems like your
best course of action, at least from my perspective.

> Me, I tend to have a gap between being able to tell "this isn't ideal" and
> knowing what ideal would look like.

> Yelling at me

The original message in this thread was pretty civil, at the very least
civil compared to what you wrote in response to it. You are the one who
responded to it with one of the most histrionic emails I've ever seen
on a serious mailing list.

> "this is a mess, clean it up, how top it NOW because I'm in charge of you!"

How many feature requests could be represented as this? My first email on this thread
was comparatively civil compared to yours ("You think there is a problem and wanna
clean stuff up? Here take this 1000 line todo list and implement it yourself because
you think you are CLEARLY BETTER THEN ME")

Oh, but your ego was hurt, or I stepped on your territory or something like that...

> > and when breaking/mixing the few conventions there are happens constantly,
> > with local variables that interact with each other. That becomes a much larger problem.
> 
> "There are only two hard things in Computer Science: cache invalidation and
> naming things." -- Phil Karlton
> 
> Do I need to tap the sign?

And you fall back to agreeing with me that "it's hard and I can't come up with better ones now".
To which the response to "Can I help come up with better ones?" is (Ctrl-C Ctrl-V)
"Here take this 1000 line todo list and implement it yourself because
you think you are CLEARLY BETTER THEN ME"

> > "i" is usually a counter used for at most a few dozen lines, "ss" and friends span regularly for
> > hundreds of lines.
>
> They didn't span hundreds of lines when I started writing the function. The
> function changed over time. The function is not finished yet. Gratuitous
> refactoring makes "git annotate" and friends useless.

Clean code to track bugs down in eventually outweighs familiar code once it
gets bad enough. At least from my experience trying to fix bugs

> > I'm sure to someone who wrote 99% of it everything makes so much more sense.
> 
> Tron: If you are a User, then everything you've done has been according to a plan.
> 
> Kevin Flynn: Ha! You wish! Well, you know what it was like. You just keep doin'
> what it looks like what you're supposed to be doin', no matter how crazy it seems.

What am I supposed to get from this again? It's just a tron quote, which seems to
be agreeing with me (code makes more sense to the people who understand it). Here,
I have a more appropriate one:

Linus Torvalds: You know you’re brilliant,
but maybe you’d like to understand what you did 2 weeks from now.

> > Just like the people who maintain GCC and the coreutils and IOCCC entries.
> 
> Carefully calculated to flatter me into agreeing with your opinions, I see.
[...]
> "Even ones written by" me. How nice.

Sorry, I looked for my red carpet to roll out but I couldn't find it.
I'm not sure if you were expecting me to be civil to your email or...

Yknow, In the follow up email you ignored I compared you Indirectly to Greg KH.
Though it was about territory too (Now it just seems like I hurt your ego, sorry)
because this had a uncanny resemblance to the
Fairly minor and unimportant Greg/Sievers sysfs Documentation Shenanigans of 2007.
Felt bad because it was sorta inaccurate after taking another lay of the land,
Was even thinking about apologizing in this email, but then, out of the corner of my
eye, I saw it. The last trick in the playbook:

> > Make it look like whatever you want, I honestly couldn't care.
> 
> Oh good, I can stop reading then.
> 
> Rob

Act insanely abrasive to a civil discussion because your territory or ego or something
was hurt, then run away because (Who could've ever possibly predicted:) "He's being MEAN to me!!!"
(Or whatever excuse you can find, if I didn't say "I honestly couldn't care."
you probably would've pulled another reason out to stop talking about this)

Half these arguments could be responded to by things in the email you just
"https://lkml.iu.edu/hypermail/linux/kernel/0707.2/3051.html"-d to.

And I'll let you run away from the argument and I'll go back to bikeshedding whatever I can find
to make the project at least somewhat better (readelf -n segfault on 64 bit ELF's, csplit regressions, etc)
(Assuming you still want patches from me). This flamewar has been as fun for me as I guess it was for you.

> P.S. Are you aware that you have opinions? That you're not an ordained judge of
> what is and is not correct? No, why should I ask questions: you didn't.

"Hey, what do you think about rewriting the infrastructure in perl?"
"No, that's stupid"
"Nice to finally meet the arbitrator of absolute truth"

"Hey, what do you think about relicensing to GPLv3"
"No, that's stupid"
"Nice to finally meet the arbitrator of absolute truth"

"Hey, what do you think about keeping a million single letter variable names
that make the code near impossible to follow"
"No, that's stupid"
"Nice to finally meet the arbitrator of absolute truth"

My interests align with the project, "this code should be more auditable" is a
OPINION, and noone was ever disputing that. But does it benefit the project?
The term "bus factor" comes to mind, both right now and in the half-month you
were gone. The new release is overdue 4 months and toysh needs to run the test
suite, I don't wanna keep bike-shedding so I was trying to work on the thing
that was important _now_, And the fact I couldn't is why I was complaining.

> I tend to perform cleanup passes to
> make the code more intelligible AFTER it's otherwise working (and has a full
> regression test suite it passes so I can catch bugs introduced by refactoring).

Sorry, from looking at the code and the massive functions and the fact it doesn't
pass half the test suite and it being 5000 lines I thought toysh was starting to
collapse under it's own weight.

[...]
> Obviously, your experience differs, and I
> look forward to the shell you write from scratch that renders toysh unnecessary.
> It should be easy for you,

There is a very specific shell I could bring up now if I wanted more flamewar fuel.
But eh, not feeling like it right now.

-   Oliver Webb <aquahobbyist at proton.me>


More information about the Toybox mailing list