How to read this note:
Likely marks: my best estimate of whether the issue fits the course's 0.3 bugfix bucket or 0.1 grammar/spelling/comment bucket.
- For PDFs, I list
pdf file name + page number.
- For source files, I list
file name + line number.
Important note about slide duplicates:
- Many slide issues appear in both the normal PDF and the animated PDF export.
- I list all occurrences with exact page numbers, but these are often the same conceptual fix repeated across exports.
A. Fresh High-Confidence Bugfixes
-
Fresh | Likely 0.3 | 01/README.md:39-40
The macOS workaround repeats the same broken linker flag:
gcc -o mem mem.c -Wall -Wl,-no_pie
So the documented fix is itself not runnable as written.
-
Fresh | Likely 0.3 | 08/p3.c:31
assert(wc >= 0); is used without including <assert.h>.
make in 08/ fails with an implicit declaration warning and then a link failure for assert.
-
Fresh | Likely 0.3 | scripts/notify.py:11-42
get_discord_payload_v0() builds a payload object but returns bare return instead of return payload.
The helper is currently unused, but if it is called later it will silently return None.
-
Fresh | Likely 0.3 | 01/common.h:4-10
common.h is not self-contained.
It uses NULL in gettimeofday(&t, NULL) but does not include a header that defines NULL.
Minimal include-only compilation fails.
-
Fresh | Likely 0.3 | 05/common.h:4-10
Same self-containment bug as above.
Minimal include-only compilation fails for this header too.
-
Fresh | Likely 0.3 | 09/common.h:4-10
Same self-containment bug as above.
Minimal include-only compilation fails here as well.
-
Fresh | Likely 0.3 | 05/Makefile:3-10
make clean removes only io but leaves the built fsync binary behind.
I validated this: after make clean, 05/fsync still exists.
-
Fresh | Likely 0.3 | 08/Makefile:3-4
make clean uses plain rm without -f.
It fails if some binaries are missing.
I validated this locally: make clean in 08/ exits with an error when some targets are absent.
-
Fresh | Likely 0.3 | 09/Makefile:5-20
make clean removes executables but leaves generated assembly files such as atomic.s, peterson-breaks.s, and peterson-fence.s.
This is inconsistent with the actual build, because the Makefile explicitly generates those .s files.
B. Fresh Lower-Priority but Real Source Issues
-
Fresh | Likely 0.1 or 0.3 depending on reviewer | 09/threads-safe.c:22
The usage string is wrong.
The binary is threads-safe, but the program prints:
usage: threads <loops>
This is a user-facing error message bug.
-
Fresh | Likely 0.1 | 08/pipe.c:18
The comment says:
child: redirect standard output to a file
but this code redirects standard output into a pipe, not a file.
-
Fresh | Lower confidence bugfix | 04/disk.py:427-435
The code contains an explicit maintainer note:
# XXX there is a weird bug in here
This is not a ready-to-fix erratum by itself, but it is a maintainer-acknowledged unresolved bug location.
-
Fresh | Lower confidence bugfix | 04/disk-precise.py:425-433
Same unresolved XXX there is a weird bug in here note in the precise variant.
-
Fresh | Lower confidence portability bug | 01/mem.c:14
%p expects a void *, but p is passed as int *.
With varargs this is technically undefined behavior, even if it usually works on common ABIs.
-
Fresh | Lower confidence portability bug | 06/va.c:6-9
%p is used for both a function pointer (main) and an int * without explicit void * conversion.
GCC warns about both under stricter checking.
C. Fresh Grammar / Spelling / Comment Fixes In Source Files
-
Fresh | Likely 0.1 | 01/README.md:60
Volatile used to indicate ...
Better:
Volatile is used to indicate ...
-
Fresh | Likely 0.1 | 01/README.md:61
i.e, should be i.e.,
-
Fresh | Likely 0.1 | 01/README.md:62-63
Volatile is needed to make sure that compiler doesn't ...
Better:
Volatile is needed to make sure that the compiler doesn't ...
-
Fresh | Likely 0.1 | 04/README.md:10
the python Decimal package
Better:
the Python Decimal package
-
Fresh | Likely 0.1 | 04/README.md:13
use at your own caution
Better:
use at your own risk
or
use with caution
-
Fresh | Likely 0.1 | scripts/notify.py:73
Discord Webhook URL presented as an environment variable
Better:
Discord webhook URL passed as an environment variable
-
Fresh | Likely 0.1 | scripts/notify.py:78
Only act notify if the pull request is merged
Better:
Only notify if the pull request is merged
D. PDF Slide Issues With Exact File and Page Numbers
D1. i.e, should be i.e.,
-
slides/03-boot.pdf, page 43
Temporary OS can download OS from network, boot from USB, etc. i.e, it is
-
slides/03-boot-anim.pdf, page 102
Same issue.
-
slides/07-paging.pdf, page 73
_start is V2P_WO(entry) i.e, (0x8010000c - 0x80000000)
-
slides/07-paging-anim.pdf, page 304
Same issue.
-
slides/08-shell.pdf, page 20
Data will be transferred between processes via this “data” (i.e, without going through disk)
-
slides/08-shell-anim.pdf, page 25
Same issue.
D2. e.g, should be e.g.,
-
slides/02-x86.pdf, page 14
register. e.g, while(x != 0) { .. }
-
slides/02-x86-anim.pdf, pages 48, 49, 50
Same issue repeated in the animated export.
-
slides/06-procs.pdf, page 79
e.g, B changes its tickets to 250
-
slides/06-procs.pdf, page 84
e.g, process 2
-
slides/06-procs-anim.pdf, pages 420, 421, 422
Same e.g, B changes its tickets to 250 issue repeated.
-
slides/06-procs-anim.pdf, pages 435, 436, 437
Same e.g, process 2 issue repeated.
-
slides/09-parallel.pdf, page 10
e.g, pthreads
-
slides/09-parallel-anim.pdf, pages 14, 15
Same issue repeated in the animated export.
D3. that what should be than what
-
slides/01-intro.pdf, page 12
What if a process needs more memory that what OS gave?
-
slides/01-intro-anim.pdf, page 21
Same issue.
D4. programs exits should be rewritten
-
slides/01-intro.pdf, page 15
Disk blocks live after programs exits, computer restarts
-
slides/01-intro-anim.pdf, page 26
Same idea appears once.
-
slides/01-intro-anim.pdf, page 27
Same idea appears again in the animated export.
-
slides/05-fs.pdf, page 3
Same wording appears in the file-system lecture.
-
slides/05-fs-anim.pdf, page 5
Same issue.
-
slides/05-fs-anim.pdf, page 6
Same issue repeated again.
Suggested wording:
Disk blocks persist after programs exit and computers restart.
D6. they own the memory should be singular
-
slides/01-intro.pdf, page 20
Each process thinks they own the memory
-
slides/01-intro-anim.pdf, page 37
Same issue.
-
slides/06-procs.pdf, page 10
Same issue.
-
slides/06-procs-anim.pdf, page 16
Same issue.
-
slides/06-procs-anim.pdf, page 17
Same issue.
Suggested wording:
Each process thinks it owns the memory.
D7. Broken sentence in process-isolation explanation
-
slides/06-procs.pdf, page 10
isolated process to its own address space
This is grammatically broken.
Better:
the OS and hardware isolate each process into its own address space
-
slides/06-procs-anim.pdf, pages 16, 17
Same issue.
How to read this note:
Likely marks: my best estimate of whether the issue fits the course's0.3bugfix bucket or0.1grammar/spelling/comment bucket.pdf file name + page number.file name + line number.Important note about slide duplicates:
A. Fresh High-Confidence Bugfixes
Fresh | Likely 0.3 | 01/README.md:39-40The macOS workaround repeats the same broken linker flag:
gcc -o mem mem.c -Wall -Wl,-no_pieSo the documented fix is itself not runnable as written.
Fresh | Likely 0.3 | 08/p3.c:31assert(wc >= 0);is used without including<assert.h>.makein08/fails with an implicit declaration warning and then a link failure forassert.Fresh | Likely 0.3 | scripts/notify.py:11-42get_discord_payload_v0()builds a payload object but returns barereturninstead ofreturn payload.The helper is currently unused, but if it is called later it will silently return
None.Fresh | Likely 0.3 | 01/common.h:4-10common.his not self-contained.It uses
NULLingettimeofday(&t, NULL)but does not include a header that definesNULL.Minimal include-only compilation fails.
Fresh | Likely 0.3 | 05/common.h:4-10Same self-containment bug as above.
Minimal include-only compilation fails for this header too.
Fresh | Likely 0.3 | 09/common.h:4-10Same self-containment bug as above.
Minimal include-only compilation fails here as well.
Fresh | Likely 0.3 | 05/Makefile:3-10make cleanremoves onlyiobut leaves the builtfsyncbinary behind.I validated this: after
make clean,05/fsyncstill exists.Fresh | Likely 0.3 | 08/Makefile:3-4make cleanuses plainrmwithout-f.It fails if some binaries are missing.
I validated this locally:
make cleanin08/exits with an error when some targets are absent.Fresh | Likely 0.3 | 09/Makefile:5-20make cleanremoves executables but leaves generated assembly files such asatomic.s,peterson-breaks.s, andpeterson-fence.s.This is inconsistent with the actual build, because the Makefile explicitly generates those
.sfiles.B. Fresh Lower-Priority but Real Source Issues
Fresh | Likely 0.1 or 0.3 depending on reviewer | 09/threads-safe.c:22The usage string is wrong.
The binary is
threads-safe, but the program prints:usage: threads <loops>This is a user-facing error message bug.
Fresh | Likely 0.1 | 08/pipe.c:18The comment says:
child: redirect standard output to a filebut this code redirects standard output into a pipe, not a file.
Fresh | Lower confidence bugfix | 04/disk.py:427-435The code contains an explicit maintainer note:
# XXX there is a weird bug in hereThis is not a ready-to-fix erratum by itself, but it is a maintainer-acknowledged unresolved bug location.
Fresh | Lower confidence bugfix | 04/disk-precise.py:425-433Same unresolved
XXX there is a weird bug in herenote in the precise variant.Fresh | Lower confidence portability bug | 01/mem.c:14%pexpects avoid *, butpis passed asint *.With varargs this is technically undefined behavior, even if it usually works on common ABIs.
Fresh | Lower confidence portability bug | 06/va.c:6-9%pis used for both a function pointer (main) and anint *without explicitvoid *conversion.GCC warns about both under stricter checking.
C. Fresh Grammar / Spelling / Comment Fixes In Source Files
Fresh | Likely 0.1 | 01/README.md:60Volatile used to indicate ...Better:
Volatile is used to indicate ...Fresh | Likely 0.1 | 01/README.md:61i.e,should bei.e.,Fresh | Likely 0.1 | 01/README.md:62-63Volatile is needed to make sure that compiler doesn't ...Better:
Volatile is needed to make sure that the compiler doesn't ...Fresh | Likely 0.1 | 04/README.md:10the python Decimal packageBetter:
the Python Decimal packageFresh | Likely 0.1 | 04/README.md:13use at your own cautionBetter:
use at your own riskor
use with cautionFresh | Likely 0.1 | scripts/notify.py:73Discord Webhook URL presented as an environment variableBetter:
Discord webhook URL passed as an environment variableFresh | Likely 0.1 | scripts/notify.py:78Only act notify if the pull request is mergedBetter:
Only notify if the pull request is mergedD. PDF Slide Issues With Exact File and Page Numbers
D1.
i.e,should bei.e.,slides/03-boot.pdf, page43Temporary OS can download OS from network, boot from USB, etc. i.e, it isslides/03-boot-anim.pdf, page102Same issue.
slides/07-paging.pdf, page73_start is V2P_WO(entry) i.e, (0x8010000c - 0x80000000)slides/07-paging-anim.pdf, page304Same issue.
slides/08-shell.pdf, page20Data will be transferred between processes via this “data” (i.e, without going through disk)slides/08-shell-anim.pdf, page25Same issue.
D2.
e.g,should bee.g.,slides/02-x86.pdf, page14register. e.g, while(x != 0) { .. }slides/02-x86-anim.pdf, pages48,49,50Same issue repeated in the animated export.
slides/06-procs.pdf, page79e.g, B changes its tickets to 250slides/06-procs.pdf, page84e.g, process 2slides/06-procs-anim.pdf, pages420,421,422Same
e.g, B changes its tickets to 250issue repeated.slides/06-procs-anim.pdf, pages435,436,437Same
e.g, process 2issue repeated.slides/09-parallel.pdf, page10e.g, pthreadsslides/09-parallel-anim.pdf, pages14,15Same issue repeated in the animated export.
D3.
that whatshould bethan whatslides/01-intro.pdf, page12What if a process needs more memory that what OS gave?slides/01-intro-anim.pdf, page21Same issue.
D4.
programs exitsshould be rewrittenslides/01-intro.pdf, page15Disk blocks live after programs exits, computer restartsslides/01-intro-anim.pdf, page26Same idea appears once.
slides/01-intro-anim.pdf, page27Same idea appears again in the animated export.
slides/05-fs.pdf, page3Same wording appears in the file-system lecture.
slides/05-fs-anim.pdf, page5Same issue.
slides/05-fs-anim.pdf, page6Same issue repeated again.
Suggested wording:
Disk blocks persist after programs exit and computers restart.D6.
they own the memoryshould be singularslides/01-intro.pdf, page20Each process thinks they own the memoryslides/01-intro-anim.pdf, page37Same issue.
slides/06-procs.pdf, page10Same issue.
slides/06-procs-anim.pdf, page16Same issue.
slides/06-procs-anim.pdf, page17Same issue.
Suggested wording:
Each process thinks it owns the memory.D7. Broken sentence in process-isolation explanation
slides/06-procs.pdf, page10isolated process to its own address spaceThis is grammatically broken.
Better:
the OS and hardware isolate each process into its own address spaceslides/06-procs-anim.pdf, pages16,17Same issue.