Update bugs.md
New statuses (an example being dead link). Reword some things. Formatting changes and possibly fixes. More shameless (or almost shameless, maybe :-) ) self promotion! :-)
This commit is contained in:
1 parent
036ddbd4f4
commit
6fac09e989
1 file changed
+77
-35
@@ -143,6 +143,13 @@ Entries with this status might or might not have a bug possibly depending on the
|
|||||||
system. In these entries we don't have the appropriate systems to test and fix
|
system. In these entries we don't have the appropriate systems to test and fix
|
||||||
any problems.
|
any problems.
|
||||||
|
|
||||||
|
## STATUS: probable bug (possibly depending on system) - please help test and if necessary fix
|
||||||
|
|
||||||
|
Entries with this status almost certainly have a bug or some other problem. The
|
||||||
|
issue or issues might depend on the system much like the above _STATUS: possible
|
||||||
|
bug (possibly depending on system)_.
|
||||||
|
|
||||||
|
|
||||||
## STATUS: doesn't work with some platforms - please help us fix
|
## STATUS: doesn't work with some platforms - please help us fix
|
||||||
|
|
||||||
Entries with this status do not work under some OSes and/or architectures (and/or
|
Entries with this status do not work under some OSes and/or architectures (and/or
|
||||||
@@ -192,31 +199,43 @@ not mutually exclusive in some cases).
|
|||||||
Entries with this status use `gets()` which is unsafe because it has no limit on
|
Entries with this status use `gets()` which is unsafe because it has no limit on
|
||||||
the length of the string. [Cody Boone
|
the length of the string. [Cody Boone
|
||||||
Ferguson](/winners.html#Cody_Boone_Ferguson) has fixed several of these and he's
|
Ferguson](/winners.html#Cody_Boone_Ferguson) has fixed several of these and he's
|
||||||
working on others in between fixing other things. He provides some important
|
working on others in between fixing other things.
|
||||||
notes:
|
|
||||||
|
|
||||||
First: in some cases changing the entry to use `fgets()` will break the entry
|
There's a very good reason for this even though it is bordering on tampering
|
||||||
and in some cases cause it to crash. Where this is known we will document it.
|
entries: in modern systems one will get possibly alarming and certainly annoying
|
||||||
Some of these Cody is also working on.
|
warnings during at least one of compiling, linking and execution. In macOS it's
|
||||||
|
most annoying as it happens during execution (also compilation) with the warning
|
||||||
|
being interspersed with the output of the program, often causing confusing
|
||||||
|
output with the entry. A good example that was fixed is
|
||||||
|
[1990/tbr](1990/tbr/tbr.c).
|
||||||
|
|
||||||
Second: you MUST check the output before and after to make sure that it remains
|
Cody provided some important notes on this status with respect to fixing /
|
||||||
|
changing entries:
|
||||||
|
|
||||||
|
0. In some cases changing the entry to use `fgets()` will break the entry and in
|
||||||
|
some cases cause it to crash. Where this is known we will document it. Some of
|
||||||
|
these Cody is also off and on working on.
|
||||||
|
|
||||||
|
1. You **MUST** check the output before and after to make sure that it remains
|
||||||
the same. Sometimes the output might not be immediately obviously wrong but is.
|
the same. Sometimes the output might not be immediately obviously wrong but is.
|
||||||
We will document known examples.
|
We will document known examples as we come across them.
|
||||||
|
|
||||||
Third: `gets()` does NOT STORE the `'\n'` but `fgets()` DOES! This is one of the
|
2. `gets()` does NOT STORE the `'\n'` but `fgets()` DOES! This is one of the
|
||||||
reasons some of the entries break when changed to `fgets()`. Cody has fixed some
|
reasons some of the entries break when changed to `fgets()`. Cody has fixed some
|
||||||
of these but there are others he hasn't had time to address and/or even discover
|
of these but there are others he hasn't had time to address or even discover
|
||||||
yet.
|
yet.
|
||||||
|
|
||||||
Fourth: just because you don't see the string `gets` in the code does not mean
|
3. Just because you don't see the string `gets` in the code does not mean it's
|
||||||
it's not used. It is after all the Obfuscated C Code Contest! :-) Sometimes it
|
not used. It is after all the International _Obfuscated C Code_ Contest! :-)
|
||||||
will be in the Makefile and other times it will be obfuscated in other ways.
|
Sometimes it will be in the Makefile and other times it will be obfuscated in
|
||||||
Compilers and linkers tend to warn about its use and this is a good way to find
|
other ways. Compilers and linkers tend to warn about its use (and as noted in
|
||||||
entries that use it even if it's not visible in the code.
|
macOS it also happens at execution) and this is a good way to find entries that
|
||||||
|
use it even if it's not visible in the code.
|
||||||
|
|
||||||
NOTE: this status is not necessarily mutually exclusive with the INABIAF (it's a
|
_NOTE_: this status is _NOT necessarily mutually exclusive_ with the _INABIAF_ (it's a
|
||||||
bug not a feature) status. The reason for this is due to warnings during linking
|
bug not a feature) status. The reason for this is due to warnings during
|
||||||
or runtime, sometimes causing confusing output.
|
compiling, linking and/or runtime, sometimes causing confusing output (as noted
|
||||||
|
above).
|
||||||
|
|
||||||
|
|
||||||
## STATUS: missing file(s) - please provide them
|
## STATUS: missing file(s) - please provide them
|
||||||
@@ -232,13 +251,29 @@ In these entries one or more make rules noted by the author and/or judges is/are
|
|||||||
missing. You might consider looking at the [archive](/archive) as a good place
|
missing. You might consider looking at the [archive](/archive) as a good place
|
||||||
to find them.
|
to find them.
|
||||||
|
|
||||||
|
## STATUS: missing or dead link - please provide them
|
||||||
|
|
||||||
|
This is as they sound: a link is either missing or it's no longer valid. In many
|
||||||
|
cases the [Internet Wayback Machine](https://web.archive.org) will be very
|
||||||
|
useful but there happens to be numerous links that this is not helpful. In other
|
||||||
|
cases the URL has changed. Some of these have been discovered by the Internet
|
||||||
|
Wayback Machine with the orange status.
|
||||||
|
|
||||||
|
### Statuses of Internet Wayback Machine archive:
|
||||||
|
|
||||||
|
- Green (3xx): redirect (this has been used to find changes in URL).
|
||||||
|
- Orange (4xx): not found etc.
|
||||||
|
- Blue: this is a good link (but note that this doesn't mean that it's correct!).
|
||||||
|
|
||||||
|
The archive website will tell you if the link was never captured.
|
||||||
|
|
||||||
## STATUS: INABIAF - please **DO NOT** fix
|
## STATUS: INABIAF - please **DO NOT** fix
|
||||||
### INABIAF: It's not a bug it's a feature :-)
|
### INABIAF: It's not a bug it's a feature :-)
|
||||||
|
|
||||||
Entries with this status should NOT be touched (unless they have another status
|
Entries with this status should NOT be touched (unless they have another status
|
||||||
that suggests that issue can be changed): they are system specific by design
|
that suggests that _that_ issue can be changed): they are system specific by
|
||||||
or are other things that are not actually bugs even if they appear to be. But
|
design or are other things that are not actually bugs even if they appear to be.
|
||||||
are noteworthy nonetheless.
|
But are noteworthy nonetheless.
|
||||||
|
|
||||||
NOTE: the definition of this status changed over time. At one point it was when
|
NOTE: the definition of this status changed over time. At one point it was when
|
||||||
something was noted by the author, the judges, a consequence of earlier
|
something was noted by the author, the judges, a consequence of earlier
|
||||||
@@ -248,7 +283,8 @@ appear to be buggy. An example of system specific entries:
|
|||||||
[1984/mullender](1984/mullender/mullender.c) (see below and the [faq](/faq.md)
|
[1984/mullender](1984/mullender/mullender.c) (see below and the [faq](/faq.md)
|
||||||
for a version that works in modern systems) is very system specific and was
|
for a version that works in modern systems) is very system specific and was
|
||||||
before system specific winning entries were discouraged. This is an all time
|
before system specific winning entries were discouraged. This is an all time
|
||||||
personal favourite of Landon Curt Noll.
|
personal favourite of Landon Curt Noll. Run the alternate code to understand why
|
||||||
|
this might be (along with how strange the source code is :-) ).
|
||||||
|
|
||||||
An example where a crash is not a bug: [2019/endoh](2019/endoh/endoh.c) is
|
An example where a crash is not a bug: [2019/endoh](2019/endoh/endoh.c) is
|
||||||
supposed to crash. There are others that are also supposed to crash or that are
|
supposed to crash. There are others that are also supposed to crash or that are
|
||||||
@@ -256,8 +292,8 @@ known to segfault but are considered features.
|
|||||||
|
|
||||||
As of 10 April 2023 the definition changed for a second time (the first time was
|
As of 10 April 2023 the definition changed for a second time (the first time was
|
||||||
07 April 2023). If something is noted by the author as a known bug or limitation
|
07 April 2023). If something is noted by the author as a known bug or limitation
|
||||||
it need not be fixed unless it impacts the usability of the program or removes
|
it need not be fixed **unless it impacts the usability** of the program or **it removes
|
||||||
instructional value. An example where a crash undocumented needn't be fixed is
|
instructional value**. An example where a crash undocumented needn't be fixed is
|
||||||
[1984/laman](1984/laman/laman.c). On the other hand the fixes made by [Cody
|
[1984/laman](1984/laman/laman.c). On the other hand the fixes made by [Cody
|
||||||
Boone Ferguson](/winners.html#Cody_Boone_Ferguson) in
|
Boone Ferguson](/winners.html#Cody_Boone_Ferguson) in
|
||||||
[1990/theorem](1990/theorem/theorem.c) were useful.
|
[1990/theorem](1990/theorem/theorem.c) were useful.
|
||||||
@@ -265,18 +301,18 @@ Boone Ferguson](/winners.html#Cody_Boone_Ferguson) in
|
|||||||
Nonetheless we challenge you to fix these entries for educational/instructional
|
Nonetheless we challenge you to fix these entries for educational/instructional
|
||||||
value and/or enjoyment but we kindly request that you **DO NOT** submit a pull
|
value and/or enjoyment but we kindly request that you **DO NOT** submit a pull
|
||||||
request! If you can't figure it out you're invited to look at the git diffs,
|
request! If you can't figure it out you're invited to look at the git diffs,
|
||||||
where there are some (some were fixed earlier on but rolled back due the fix
|
where there are some (some were fixed earlier on but rolled back as both Cody
|
||||||
feeling like tampering).
|
and Landon individually felt that the fix was tampering with the entry).
|
||||||
|
|
||||||
NOTE: in the case of `gets()` we've fixed some to avoid the warning of the
|
NOTE: in the case of `gets()` we've fixed some to avoid the warning of the
|
||||||
compiler, linker or even during runtime, depending on the system. In [one
|
compiler, linker or even during runtime, depending on the system. In [some cases
|
||||||
case](1990/tbr/tbr.c) the fix actually prevents confusing output (though that
|
like 1990/tbr](1990/tbr/tbr.c) the fix actually prevents confusing output (though that
|
||||||
was not the only fix made).
|
was not the only fix made in that entry).
|
||||||
|
|
||||||
### Exception: your own entries
|
### Exception: your own entries
|
||||||
|
|
||||||
Of course if you're the author you're welcome to fix your own entry (or else
|
Of course if you're the author you're welcome to fix your own entry, prefer your
|
||||||
suggest that they're fixed)!
|
own fix or suggest that they're fixed!
|
||||||
|
|
||||||
|
|
||||||
## STATUS: requires a compiler supporting `-traditional-cpp` - alternate code requested
|
## STATUS: requires a compiler supporting `-traditional-cpp` - alternate code requested
|
||||||
@@ -295,10 +331,12 @@ compiler supporting you are welcome to summit such code via a
|
|||||||
will be happy to credit you in the entry's _README.md_ file.
|
will be happy to credit you in the entry's _README.md_ file.
|
||||||
|
|
||||||
NOTE: as of commit fa8a9b8b28a6b69a6b4efd74a45402f745e280b3 we believe that all
|
NOTE: as of commit fa8a9b8b28a6b69a6b4efd74a45402f745e280b3 we believe that all
|
||||||
the entries with this problem have been fixed.
|
the entries with this problem have been fixed due [Cody Boone
|
||||||
|
Ferguson](/winners.html#Cody_Boone_Ferguson)'s pursuit in fixing entries. Thanks
|
||||||
|
Cody!
|
||||||
|
|
||||||
|
|
||||||
# List of entries by year, sorted in alphabetical order
|
# List of entries by year, sorted in alphabetical order per year
|
||||||
|
|
||||||
# 1984
|
# 1984
|
||||||
|
|
||||||
@@ -870,12 +908,12 @@ warning in their comments on that.
|
|||||||
|
|
||||||
|
|
||||||
## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md))
|
## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md))
|
||||||
## STATUS: possible bug (possibly depending on system) - please help test and if necessary fix
|
## STATUS: probable bug (possibly depending on system) - please help test and if necessary fix
|
||||||
|
|
||||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial
|
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial
|
||||||
segfault and he also fixed the [supplementary
|
segfault and he also fixed the [supplementary
|
||||||
program](2001/bellard/bellard.otccex.c) to test the entry on to not segfault and
|
program bellard.otccex.c](2001/bellard/bellard.otccex.c) to test the entry on to not segfault and
|
||||||
seemingly work but he has no 32-bit system to test any further fixes and we
|
seemingly work but he has no 32-bit system to test any further fixes; we
|
||||||
would greatly appreciate anyone's help! It appears that this entry will require
|
would greatly appreciate anyone's help! It appears that this entry will require
|
||||||
major debugging and to make it work one might need to have a deep understanding
|
major debugging and to make it work one might need to have a deep understanding
|
||||||
of the ELF format.
|
of the ELF format.
|
||||||
@@ -929,6 +967,10 @@ as they are often used with the `&&` operator.
|
|||||||
needless cast to `char *` from gets(). This cast remains in the code however.
|
needless cast to `char *` from gets(). This cast remains in the code however.
|
||||||
6. The code no longer uses `gets()` but `fgets()`; this is not the problem
|
6. The code no longer uses `gets()` but `fgets()`; this is not the problem
|
||||||
however.
|
however.
|
||||||
|
7. Sometimes the lack of a _proper_ prototype lets code work if the function is
|
||||||
|
used incorrectly so one should be careful with adding the proper prototypes.
|
||||||
|
With this entry it didn't _appear_ to be relevant but maybe it is after another
|
||||||
|
change?
|
||||||
|
|
||||||
|
|
||||||
## [2004/gavin](2004/gavin/gavin.c) ([README.md](2004/gavin//README.md))
|
## [2004/gavin](2004/gavin/gavin.c) ([README.md](2004/gavin//README.md))
|
||||||
|
|||||||
Reference in new issue
Block a user