[Coco] Issues with NitrOS9 build

Gene Heskett gheskett at wdtv.com
Fri Jan 24 15:01:58 EST 2014


On Friday 24 January 2014 15:01:17 Tormod Volden did opine:

> On Fri, Jan 24, 2014 at 6:05 AM, Bob Devries wrote:
> > Hi all,
> > 
> > I just built NitrOS9 from a clean pull, and found a problem.
> > 
> > I loaded up the image file:
> > 
> > nos96309l2v030209coco3_80d_50Hz.dsk
> > 
> > This image has TWO /DD modules, and they have the same CRC.
> 
> It would have been simpler if you told us which module or even just
> which CRC was duplicated. Anyway, Robert found out, but let me explain
> how I debugged it and found *another* bug, in case someone finds it
> instructive:
> 
> Since I was not sure if this was the same module copied twice or two
> modules being identical, I started to check the latter. After building
> all the modules for coco3:
> 
> make -C level2/coco3/modules NITROS9DIR=$PWD
> (or simply "make PORTS=coco3" which would have built everything for
> coco3)
> 
> I checked the CRC of all modules for duplicates:
> 
> cd level2/coco3/modules
> os9 ident *.* | grep CRC | uniq -d
> (note that *.* is not a catch-all like in DOS, but matching all module
> filenames since they have an extension)
> 
> So there was two CRCs duplicated. I can then for instance look at all
> "DD" modules:
> 
> os9 ident *.* | grep -A9 ": DD$"
> (note that -A9 prints out 9 lines after the matching one)
> 
> Although the trained eye spots "Rammer" there and the attached brain
> might know what that is about, it doesn't tell us directly which files
> that have duplicated CRC, so just check which files are duplicated:
> 
> md5sum *.* | sort
> 
> A quick glance on the output seems to show several duplicates, but let
> the "uniq -d" do the job:
> 
> md5sum *.* | sort | uniq -d -w 16
> (we only compare the 16 first characters, the checksum)
> 
> 803df7a7f2dca70b9bf7cb16d6b3d545  r0_128k.dd
> cdb23b13909676394539680edf9d2c26  ddr0_128k.dd
> 
> So we find r0_128k.dd and ddr0_128k.dd have been duplicated. To which
> other files:
> 
> md5sum *.* | grep 803df7a7f2dca70b9bf7
> 803df7a7f2dca70b9bf7cb16d6b3d545  r0_128k.dd
> 803df7a7f2dca70b9bf7cb16d6b3d545  r0_192k.dd
> 803df7a7f2dca70b9bf7cb16d6b3d545  r0_8k.dd
> 803df7a7f2dca70b9bf7cb16d6b3d545  r0_96k.dd
> 
> So these four modules are bit-to-bit identical. Strange isn't it.
> 
> grep -A1 r0_ makefile
> (or reading the makefile)
> 
> shows us that they are all built from r0.asm but the RAMSize variable
> is passed from the makefile with different values for each module. So
> why do the modules end up identical all the same? Investigating
> level2/modules/r0.asm shows that RAMSize is "set" in the source file
> itself, so the value passed from the makefile is overridden... The
> "set" must be removed or at least wrapped in "IFDEF - ENDC" to leave a
> default value.
> 
> A possible explanation for how this bug arised is that an assembler
> that was used before gave precedence to the makefile variable when the
> same variable was "set" in the source file. But not lwtools.
> 
> Fixed. So now there will be RAM disks of different sizes in the builds
> again.
> 
> Tormod
>
That is a great catch Tormod, thanks!

Cheers, Gene
-- 
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
Genes Web page <http://geneslinuxbox.net:6309/gene>

NOTICE: Will pay 100 USD for an HP-4815A defective but
complete probe assembly.

He who hoots with owls by night cannot soar with eagles by day.
A pen in the hand of this president is far more
dangerous than 200 million guns in the hands of
         law-abiding citizens.



More information about the Coco mailing list