Your mail has nothing to do with the 3.8 release, nor with testing our code, nor with the malloc stuff I posted. You are hijacking yet another thread with your broken code, and it is quite frankly getting boring.
> I am not sure if this is related. But when I code assembly to pass > a double precision floating point value (%xmm0) to printf, my program will > crash > without a stack frame. I am fine for passing strings and integers. > > Here's the simple code: > > .section .data > > str: > .string "%f\n" > test: > .float 2.5 > > .section .text > .extern printf > > .global main > > main: > > push %rbp # set-up stack frame > movq %rsp, %rbp # will fault without this > > movl $str, %edi > movl $test, %eax > cvtss2sd (%rax), %xmm0 > movq $1, %rax > call printf > > movq $1, %rax > xorq %rdi, %rdi > syscall > > > If I remove the stack frame, this code will fault every time. Now, according > to the amd64 ABI, I shouldn't need a stack frame. Now, gcc compiles with > stack > frames, but this does appear to be a memory bug. I'm just not sure where to > go > next to research this further. > > Here's my dmesg: > > OpenBSD 3.8-beta (GENERIC) #210: Sat Aug 13 20:20:15 MDT 2005 > [EMAIL PROTECTED]:/usr/src/sys/arch/amd64/compile/GENERIC > real mem = 1073278976 (1048124K) > avail mem = 909148160 (887840K) > using 22937 buffers containing 107536384 bytes (105016K) of memory > mainbus0 (root) > cpu0 at mainbus0: (uniprocessor) > cpu0: AMD Athlon(tm) 64 Processor 3000+, 1808.55 MHz > cpu0: > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW > cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB 64b/line > 16-way L2 cache > cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative > cpu0: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative > pci0 at mainbus0 bus 0: configuration mode 1 > "Nvidia nForce4 DDR" rev 0xa3 at pci0 dev 0 function 0 not configured > "Nvidia nForce4 ISA" rev 0xa3 at pci0 dev 1 function 0 not configured > "Nvidia nForce4 SMBus" rev 0xa2 at pci0 dev 1 function 1 not configured > ohci0 at pci0 dev 2 function 0 "Nvidia nForce4 USB" rev 0xa2: irq 10, version > 1.0, legacy support > usb0 at ohci0: USB revision 1.0 > uhub0 at usb0 > uhub0: Nvidia OHCI root hub, rev 1.00/1.00, addr 1 > uhub0: 10 ports with 10 removable, self powered > ehci0 at pci0 dev 2 function 1 "Nvidia nForce4 USB" rev 0xa3: irq 11 > usb1 at ehci0: USB revision 2.0 > uhub1 at usb1 > uhub1: Nvidia EHCI root hub, rev 2.00/1.00, addr 1 > uhub1: 10 ports with 10 removable, self powered > auich0 at pci0 dev 4 function 0 "Nvidia nForce4 AC97" rev 0xa2: irq 11, > nForce4 > AC97 > ac97: codec id 0x414c4760 (Avance Logic ALC655) > audio0 at auich0 > pciide0 at pci0 dev 6 function 0 "Nvidia nForce4 IDE" rev 0xa2: DMA, channel 0 > configured to compatibility, channel 1 configured to compatibility > pciide0: channel 0 disabled (no drives) > atapiscsi0 at pciide0 channel 1 drive 0 > scsibus0 at atapiscsi0: 2 targets > cd0 at scsibus0 targ 0 lun 0: <HL-DT-ST, DVDRAM GSA-4163B, A103> SCSI0 5/cdrom > removable > cd0(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 2 > pciide1 at pci0 dev 7 function 0 "Nvidia nForce4 SATA 1" rev 0xa3: DMA > (unsupported), channel 0 wired to native-PCI, channel 1 wired to native-PCI > pciide1: using irq 10 for native-PCI interrupt > wd0 at pciide1 channel 0 drive 0: <WDC WD360GD-00FLA2> > wd0: 16-sector PIO, LBA48, 35304MB, 72303840 sectors > pciide1: channel 1 ignored (not responding; disabled or no drives?) > pciide2 at pci0 dev 8 function 0 "Nvidia nForce4 SATA 2" rev 0xa3: DMA > (unsupported), channel 0 wired to native-PCI, channel 1 wired to native-PCI > pciide2: using irq 11 for native-PCI interrupt > pciide2: channel 0 ignored (not responding; disabled or no drives?) > pciide2: channel 1 ignored (not responding; disabled or no drives?) > ppb0 at pci0 dev 9 function 0 "Nvidia nForce4 PCI-PCI" rev 0xa2 > pci1 at ppb0 bus 1 > vga1 at pci1 dev 5 function 0 "ATI Rage XL" rev 0x27 > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > "VIA VT6306 FireWire" rev 0x80 at pci1 dev 6 function 0 not configured > "Nvidia CK804 LAN" rev 0xa3 at pci0 dev 10 function 0 not configured > ppb1 at pci0 dev 11 function 0 "Nvidia nForce4 PCIE" rev 0xa3 > pci2 at ppb1 bus 2 > ppb2 at pci0 dev 12 function 0 "Nvidia nForce4 PCIE" rev 0xa3 > pci3 at ppb2 bus 3 > ppb3 at pci0 dev 13 function 0 "Nvidia nForce4 PCIE" rev 0xa3 > pci4 at ppb3 bus 4 > bge0 at pci4 dev 0 function 0 "Broadcom BCM5721" rev 0x11, BCM5750 B1 > (0x4101): > irq 5 address 00:e0:81:56:8f:66 > brgphy0 at bge0 phy 1: BCM5750 10/100/1000baseT PHY, rev. 0 > ppb4 at pci0 dev 14 function 0 "Nvidia nForce4 PCIE" rev 0xa3 > pci5 at ppb4 bus 5 > pchb0 at pci0 dev 24 function 0 "AMD AMD64 HyperTransport" rev 0x00 > pchb1 at pci0 dev 24 function 1 "AMD AMD64 Address Map" rev 0x00 > pchb2 at pci0 dev 24 function 2 "AMD AMD64 DRAM Cfg" rev 0x00 > pchb3 at pci0 dev 24 function 3 "AMD AMD64 Misc Cfg" rev 0x00 > isa0 at mainbus0 > com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo > pckbc0 at isa0 port 0x60/5 > pckbd0 at pckbc0 (kbd slot) > pckbc0: using irq 1 for kbd slot > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pmsi0 at pckbc0 (aux slot) > pckbc0: using irq 12 for aux slot > wsmouse0 at pmsi0 mux 0 > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > sysbeep0 at pcppi0 > lpt0 at isa0 port 0x378/4 irq 7 > dkcsum: wd0 matches BIOS drive 0x80 > root on wd0a > rootdev=0x0 rrootdev=0x300 rawdev=0x302 > auich0: measured ac97 link rate at 48010 Hz, will use 48000 Hz > > like to ask the community to do lots of testing over the next week if > > they can. > > > > This release will bring a lot of new ideas from us. One of them in > > particular is somewhat risky. I think it is time to talk about that > > one, and let people know what is ahead on our road. > > > > Traditionally, Unix malloc(3) has always just "extended the brk", > > which means extending the traditional Unix process data segment to > > allocate more memory. malloc(3) would simply extend the data segment, > > and then calve off little pieces to requesting callers as needed. It > > also remembered which pieces were which, so that free(3) could do it's > > job. > > > > The way this was always done in Unix has had a number of consequences, > > some of which we wanted to get rid of. In particular, malloc & free > > have not been able to provide strong protection against overflows or > > other corruption. > > > > Our malloc implementation is a lot more resistant (than Linux) to > > "heap overflows in the malloc arena", but we wanted to improve things > > even more. > > > > Starting a few months ago, the following changes were made: > > > > - We made the mmap(2) system call return random memory addresses. As well > > the kernel ensures that two objects are not mapped next to each other; > > in effect, this creates unallocated memory which we call a "guard page". > > > > - We have changed malloc(3) to use mmap(2) instead of extending the data > > segment via brk() > > > > - We also changed free(3) to return memory to the kernel, un-allocating > > them out of the process. > > > > - As before, objects smaller than a page are allocated within shared > > pages that malloc(3) maintains. But their allocation is now somewhat > > randomized as well. > > > > - A number of other similar changes which are too dangerous for normal > > software or cause too much of a slowdown are available as malloc options > > as described in the manual page. These are very powerful for debugging > > buggy applications. > > > > Other results: > > > > - When you free an object that is >= 1 page in size, it is actually > > returned to the system. Attempting to read or write to it after > > you free is no longer acceptable. That memory is unmapped. You get > > a SIGSEGV. > > > > - For a decade and a bit, we have been fixing software for buffer overflows. > > Now we are finding a lot of software that reads before the start of the > > buffer, or reads too far off the end of the buffer. You get a SIGSEGV. > > > > To some of you, this will sound like what the Electric Fence toolkit > > used to be for. But these features are enabled by default. Electric > > Fence was also very slow. It took nearly 3 years to write these > > OpenBSD changes since performance was a serious consideration. (Early > > versions caused a nearly 50% slowdown). > > > > Our changes have tremendous benefits, but until some bugs in external > > packages are found and fixed, there are some risks as well. Some > > software making incorrect assumptions will be running into these new > > security technologies. > > > > I discussed this in talks I have given before: I said that we were > > afraid to go ahead with guard pages, because a lot of software is just > > written to such low standards. Applications over-read memory all the > > time, go 1 byte too far, read 1 byte too early, access memory after free, > > etc etc etc. > > > > Oh well -- we've decided that we will try to ship with this protection > > mechanism in any case, and try to solve the problems as we run into > > them. > > > > Two examples: > > > > Over the last two months, some OpenBSD users noticed that the X server > > was crashing occasionally. Two bugs have been diagnosed and fixed by > > us. One was a use-after-free bug in the X shared library linker. The > > other was a buffer-over-read bug deep down in the very lowest level > > fb* pixmap compositing routines. The latter bug in particular was > > very difficult to diagnose and fix, and is about 10 years old. We > > have found other bugs like this in other external software, and even a > > few in the base OpenBSD tree (though those were found a while back, > > even as we started experimenting with the new malloc code). > > > > I would bet money that the X fb* bug has crashed Linux (and other) X > > servers before. It is just that it was very rare, and noone ever > > chased it. The new malloc we have just makes code get lucky less > > often, which lets us get to the source of a bug easier. As a > > programmer, I appreciate anything which makes bugs easier to > > reproduce. > > > > We expect that our malloc will find more bugs in software, and this > > might hurt our user community in the short term. We know that what > > this new malloc is doing is perfectly legal, but that realistically > > some open source software is of such low quality that it is just not > > ready for these things to happen. > > > > We ask our users to help us uncover and fix more of these bugs in > > applications. Some will even be exploitable. Instead of saying that > > OpenBSD is busted in this regard, please realize that the software > > which is crashing is showing how shoddily it was written. Then help > > us fix it. For everyone.. not just OpenBSD users. > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com