News for hackers. Stuff that matters.
Re:Bugs that the Rust compiler catches for you by kragen on Thursday May 05, 2022 @09:37PM (#31280242)
Valgrind didn't exist then. (Next you're going to say ASan and UBSan. Those didn't exist either.) They (he?) could have run GDB and disassembled the code around the crashing instruction and verified that the machine code there didn't make any fucking sense. But that implies they knew assembly language well enough to recognize when their compiler was spewing nonsense, which is a couple of steps above "can read working assembly emitted by the compiler" or even "can write applications in assembly language".

Even with Valgrind it can be tough to distinguish whether your output code is wrong because of a bug in the compiler or because your code was just wrong. There was a change to GCC a few years back that introduced security holes into the FreeBSD and NetBSD kernel because it just threw away code that would only be invoked in "undefined behavior" scenarios. Signed integer overflow I think.

Re:Bugs that the Rust compiler catches for you by andrewchambers on Thursday May 05, 2022 @09:43PM (#31280288)
You are unfairly comparing ancient C with modern rust - Try comparing modern C with modern rust to avoid making a straw man argument. Like I said, I don't even disagree, I still think you are just doing everyone a disservice with this line of reasoning.

He said if he had used rust - I am saying if he had used C when rust was available 1. The bug would have been fixed. 2. He could have used valgrind. Modern C also has something called ubsan, and another thing called frama-C.

These tools may be inferior to what rust has, but ignoring they exist or comparing 10+ year old C with modern rust is a bad faith argument.

Re:Bugs that the Rust compiler catches for you by kragen on Thursday May 05, 2022 @10:51PM (#31280753)
I agree, I don't think that a bug in GCC last millennium is a very strong argument for using Rust instead of C today, though such arguments do exist.

However, I also don't think they particularly help you to distinguish a compiler bug from an error in your understanding of the language semantics, although they sure do help a lot with everyday errors.

With respect to questions of inferiority or superiority, keep in mind that Valgrind and UBSan are only dynamic checkers; they don't help at all with errors that don't occur in your testing. Frama-C is a static checker more similar to Rust's capabilities, but much more limited, but also with cscope-like abilities for reverse-engineering existing source bases.

The great advantage these three tools (and ASan) have is that you don't have to rewrite your C in Rust in order to use them.

Re:Bugs that the Rust compiler catches for you by KsassPeuk on Wednesday May 11, 2022 @10:04AM (#31340092)
> but much more limited

I agree and I disagree ;)

I agree because having a type system that directly provides the guarantee that whole classes of runtime error cannot happen provides fast feedback during development at a low cost.

I disagree because even in a press button (+ tuning) approach, you can prove things with Frama-C that the Rust compiler cannot prove (reason why there is runtime bound-checking, implementation defined behavior for integer overflow and so on in Rust). But also because you can prove much more advance properties than "just" absence of runtime errors.

Re:Bugs that the Rust compiler catches for you by kragen on Friday May 13, 2022 @08:52PM (#31374091)
And vice versa; Frama-C doesn't attempt to prove the absence of data races, last I checked.
Re:Bugs that the Rust compiler catches for you by KsassPeuk on Monday May 16, 2022 @03:20AM (#31394360)
In fact there exists a plugin that can do that but it is currently not free:

https://frama-c.com/fc-plugins/mthread.html

(And by the way since it is not done by typing it is hard to use on legacy code)

Re:Bugs that the Rust compiler catches for you by jcelerier on Friday May 06, 2022 @02:58AM (#31282133)
OP mentions asan so valgrind definitely did exist - it's more than twice as old as asan
Re:Bugs that the Rust compiler catches for you by kragen on Friday May 06, 2022 @09:05AM (#31284637)
Hmm, that's interesting—that seems like an inconsistency in the story. OP, what year was this?
Re:Bugs that the Rust compiler catches for you by jcelerier on Friday May 06, 2022 @01:40PM (#31287864)
I don't see any inconsistency. Universities still have multi-user unix servers for students in 2022 - at Bordeaux there's a few 64/128 thread ones with as many gigabytes of RAM, which leaves a lot of room for doing work during class. (And most likely they would be running some Debian LTS like Jessie or Stretch)
Re:Bugs that the Rust compiler catches for you by kragen on Friday May 06, 2022 @01:42PM (#31287887)
Sure, I'm using a multi-user Unix server right now in another window. The key point was that there was just one server for all the undergraduates. (And that they had to worry about a private install of GCC using up their disk quota.)
Re:Bugs that the Rust compiler catches for you by jcelerier on Friday May 06, 2022 @02:56PM (#31288589)
.. the uni I'm involved in still has a 1gb quota per student ~ afaik which ... needs some contorsion to be able to fit a GCC build, for sure
Re:Bugs that the Rust compiler catches for you by kragen on Saturday May 07, 2022 @01:43PM (#31296772)
Yeah, you can't build modern GCC inside the 1GB quota, but you can probably build it in /tmp or /var/tmp or /scratch or something. The actual built compiler is under 50 MB in GCC 8. And if you're really cramped on quota you can gzexe it, at the cost of painfully slow startup times.
Re:Bugs that the Rust compiler catches for you by pjmlp on Friday May 06, 2022 @06:41AM (#31283618)
I am quite sure stuff like Insure++ and Purify did exist.
Re:Bugs that the Rust compiler catches for you by kragen on Friday May 06, 2022 @09:04AM (#31284630)
Yes, Purify surely existed. I've never heard of a university leasing out Purify licenses to undergrads. I don't know anything about Insure++.
Re:Bugs that the Rust compiler catches for you by pjmlp on Friday May 06, 2022 @09:35AM (#31284894)
On my days that kind of software was accessible in all universities, with the right connections.
Re:Bugs that the Rust compiler catches for you by shaklee3 on Friday May 06, 2022 @09:14AM (#31284715)
valgrind came out 20 years ago, so yes, it definitely existed 10 years ago.
Re:Bugs that the Rust compiler catches for you by kragen on Friday May 06, 2022 @09:33AM (#31284876)
20 years ago nearly all universities could afford more than a single Unix box for all the undergraduates to share. At that point it was mainstream to buy a cheap US$300 ATX box and run Linux on it, so you could have one per student or one per dozen students, rather than one for the whole undergraduate student body.

The Rio Receiver came out 21 years ago. That was a Linux box sold as a consumer electronics stereo component; it grabbed MP3s over Ethernet to play them. I don't remember how much it cost but it was less than US$300.

But apparently the original author tried using asan? That seems like an inconsistency in the story.