On Fri, 27 May 2005, Otto Moerbeek wrote: > On Fri, 27 May 2005, Eric Faurot wrote: > > > I've noted that jot(1) behaviour is erratic on my system (ibook) wrt to > > random number generation. > > Ik can reproduce this on my G3 iBook, but not on my Mac mini. > > It turns out that x becomes suddenly 0 after some iterations of this loop: > > for (i = 1; i <= reps || infinity; i++) { > double v; > y = arc4random() / ((double)0xffffffff + 1); > v = y * x + begin; > if (putdata(v, reps == i && !infinity)) > errx(1, "range error in conversion: %f", v); > } > > Making x a global var makes the problem disappear. My guess is that we are > looking at either a code generation problem or a fp context save/restore > problem. > > Will dig into this a bit deeper later.
The problem disappears if you compile without -O2: $ DEBUG=-O2 make $ obj/jot -r 0 ... -Otto > > -Otto > > > > > "jot -r 0" will start generating 1's continuously after a (short) while. > > It does it even quicker when higher precision is requested. > > "jot -p 9 0" starts throwing 1.000000000's after 74 random lines. > > "jot -p 5 0" will do that after 104 lines. Oddly enough, it happens > > only when output goes to the terminal (pipes and redirections seem to > > work). > > > > Also, the examples in the manpage produce very suspicious results: The > > following happens every 4 or 5 invocations: > > > > $ jot -r -p 0 100000 0.5 3.5 | sort -n | uniq -c > > 33162 1 > > 33422 2 > > 33416 3 > > $ jot -r -p 0 100000 0.5 3.5 | sort -n | uniq -c > > 33183 1 > > 33223 2 > > 33594 3 > > $ jot -r -p 0 100000 0.5 3.5 | sort -n | uniq -c > > 838 1 > > 781 2 > > 784 3 > > 97597 0 > > > > > > Another one (more than half the time): > > > > $ jot -w %d -r 100000 1 4 | sort -n | uniq -c > > 33104 1 > > 33476 2 > > 33420 3 > > $ jot -w %d -r 100000 1 4 | sort -n | uniq -c > > 89731 1 > > 5164 2 > > 5105 3 > > $ jot -w %d -r 100000 1 4 | sort -n | uniq -c > > 33210 1 > > 33443 2 > > 33347 3 > > $ jot -w %d -r 100000 1 4 | sort -n | uniq -c > > 97808 1 > > 1090 2 > > 1102 3 > > > > I'm not an entropy expert, but I suspect there is something very wrong. > > All seem to work fine on i386. So I guess it is a macppc issue. > > Here is the dmesg output. > > > > [ using 308668 bytes of bsd ELF symbol table ] > > console out [ATY,Bee_A]console in [keyboard] ADB found > > using parent ATY,BeeParent:: memaddr 98000000 size 8000000, : consaddr > > 9c008000, : ioaddr 90020000, size 20000: memtag 8000, iotag 8000: > > width 1024 linebytes 1024 height 768 depth 8 > > Copyright (c) 1982, 1986, 1989, 1991, 1993 > > The Regents of the University of California. All rights reserved. > > Copyright (c) 1995-2005 OpenBSD. All rights reserved. > > http://www.OpenBSD.org > > > > OpenBSD 3.7 (GENERIC) #225: Sun Mar 20 00:55:39 MST 2005 > > [EMAIL PROTECTED]:/usr/src/sys/arch/macppc/compile/GENERIC > > real mem = 134217728 (131072K) > > avail mem = 112680960 (110040K) > > using 1254 buffers containing 6709248 bytes of memory > > mainbus0 (root) > > cpu0 at mainbus0: 750FX (Revision 0x203): 800 MHz: 512KB L2 cache > > memc0 at mainbus0: uni-n > > mpcpcibr0 at mainbus0: uni-north, Revision 0xff > > pci0 at mpcpcibr0 bus 0 > > pchb0 at pci0 dev 11 function 0 "Apple Pangea AGP" rev 0x00 > > vgafb0 at pci0 dev 16 function 0 "ATI Radeon Mobility M7 LW" rev 0x00, mmio > > wsdisplay0 at vgafb0: console (std, vt100 emulation) > > mpcpcibr1 at mainbus0: uni-north, Revision 0x0 > > pci1 at mpcpcibr1 bus 0 > > pchb1 at pci1 dev 11 function 0 "Apple Pangea PCI" rev 0x00 > > macobio0 at pci1 dev 23 function 0 "Apple Pangea" rev 0x00 > > openpic0 at macobio0: version 0x4614 > > gpio_obio0 at macobio0 > > gpio_obio1 at gpio_obio0 offset 0x9 irq 47 > > programmer-switch at gpio_obio0 offset 0x11 not configured > > firewire-linkon at gpio_obio0 offset 0x5b not configured > > cpu-vcore-select at gpio_obio0 offset 0x6b not configured > > extint-gpio4 at gpio_obio0 offset 0x5c not configured > > gpio9 at gpio_obio0 offset 0x73 not configured > > extint-gpio12 at gpio_obio0 offset 0x64 not configured > > gpio5 at gpio_obio0 offset 0x6f not configured > > gpio6 at gpio_obio0 offset 0x70 not configured > > extint-gpio4 at gpio_obio0 offset 0x5c not configured > > gpio11 at gpio_obio0 offset 0x75 not configured > > extint-gpio15 at gpio_obio0 offset 0x67 not configured > > zsc0 at macobio0: irq 22,23 > > zstty0 at zsc0 channel 0 > > zstty1 at zsc0 channel 1 > > snapper0 at macobio0: irq 30,1,2 > > adb0 at macobio0 irq 25: via-pmu 3 targets > > aed0 at adb0 addr 0: ADB Event device > > akbd0 at adb0 addr 2: iBook keyboard with inverted T (ISO layout) > > wskbd0 at akbd0 (mux 1 ignored for console): console keyboard, using > > wsdisplay0 > > ams0 at adb0 addr 3: EMP trackpad <tpad> 2-button, 400 dpi > > wsmouse0 at ams0 mux 0 > > abtn0 at adb0 addr 7: brightness/volume/eject buttons > > apm0 at adb0: battery flags 0x5, 0% charged > > ki2c0 at macobio0 > > wdc0 at macobio0 irq 19: DMA > > wd0 at wdc0 channel 0 drive 0: <FUJITSU MHS2030AT> > > wd0: 16-sector PIO, LBA48, 28615MB, 58605120 sectors > > atapiscsi0 at wdc0 channel 0 drive 1 > > scsibus0 at atapiscsi0: 2 targets > > cd0 at scsibus0 targ 0 lun 0: <QSI, CD-ROM SCR-242, CL18> SCSI0 > > 5/cdrom removable > > wd0(wdc0:0:0): using PIO mode 4, DMA mode 2 > > cd0(wdc0:0:1): using PIO mode 4, DMA mode 2 > > audio0 at snapper0 > > ohci0 at pci1 dev 24 function 0 "Apple Pangea USB" rev 0x00: irq 27, > > version 1.0 > > usb0 at ohci0: USB revision 1.0 > > uhub0 at usb0 > > uhub0: Apple OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 > > uhub0: 2 ports with 2 removable, self powered > > ohci1 at pci1 dev 25 function 0 "Apple Pangea USB" rev 0x00: irq 28, > > version 1.0 > > usb1 at ohci1: USB revision 1.0 > > uhub1 at usb1 > > uhub1: Apple OHCI root hub, class 9/0, rev 1.00/1.00, addr 1 > > uhub1: 2 ports with 2 removable, self powered > > mpcpcibr2 at mainbus0: uni-north, Revision 0x6 > > pci2 at mpcpcibr2 bus 0 > > pchb2 at pci2 dev 11 function 0 "Apple Pangea PCI" rev 0x00 > > "Apple Pangea FireWire" rev 0x00 at pci2 dev 14 function 0 not configured > > gem0 at pci2 dev 15 function 0 "Apple GMAC" rev 0x00: irq 41, address > > 00:0a:95:89:b1:9c > > bmtphy0 at gem0 phy 0: BCM5221 100baseTX PHY, rev. 4 > > uhidev0 at uhub1 port 1 configuration 1 interface 0 > > uhidev0: Logitech USB Mouse, rev 1.10/6.20, addr 2, iclass 3/1 > > ums0 at uhidev0: 3 buttons and Z dir. > > wsmouse1 at ums0 mux 0 > > bootpath: '/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL PROTECTED]/[EMAIL > > PROTECTED]/bsd' > > boot device: wd0. > > root on wd0a > > rootdev=0x0 rrootdev=0xb00 rawdev=0xb02 > > ugen0 at uhub1 port 2 > > ugen0: HCF USB V.90 Data/Fax Modem Apple internal modem, rev 1.10/1.00, > > addr 3