Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0005799 [DCSS] Bug Report major have not tried 2012-06-19 12:12 2012-07-14 12:33
Reporter KiloByte View Status public  
Assigned To KiloByte
Priority normal Resolution done  
Status resolved   Product Branch 0.11 ancient branch
Summary 0005799: OS zoology breakage: fdatasync()
Description We do some silly zoology checks, with rules like: "if the kernel is not Linux, Windows, NetBSD or Solaris, assume there is no fdatasync()" (Windows doesn't have it either, but is handled differently). This is hardly ever right.

For example, this just broke on Debian kfreebsd and on Hurd, as gcc-4.7 (the new default) detects linkage conflicts. It used to work before because old compilers would arbitrarily use either the C version from <unistd.h> or our C++-decorated stub from "syscalls.h", and both were present during link.

Debian's kfreebsd (an official supported architecture) has FreeBSD kernel with GNU userland, so obviously kernel checks are incorrect. Hurd (which might possibly become a "technology preview") is not on the list of platforms that have fdatasync() as well.

All this could be fixed by a compile check.

Not sure how to implement it in our makefile, though -- and it needs to be fixed in 0.10, too.
Additional Information
Tags No tags attached.
Attached Files

- Relationships
child of 0002144closedKate we need a separate configure step 

-  Notes
(0019007)
KiloByte (manager)
2012-07-14 12:33

Fixed in a band-aid way.

fdatasync() comes from a different header on every platform, and even worse, in at least one case (some versions of OS X) it has a buggy version in a non-standard header, so hacks like recursive grep in system headers (which can be wrongly located, too...) won't work.

The compiler has authoritative knowledge where headers used for compilation can be, so asking it is always enough. Too bad, compile checks are slow, and without some infrastructure they are hard to use in conditional makefile rules.

- Issue History
Date Modified Username Field Change
2012-06-19 12:12 KiloByte New Issue
2012-07-09 01:47 neil Relationship added child of 0002144
2012-07-14 12:33 KiloByte Note Added: 0019007
2012-07-14 12:33 KiloByte Status new => resolved
2012-07-14 12:33 KiloByte Fixed in Branch => 0.11 development branch
2012-07-14 12:33 KiloByte Resolution open => done
2012-07-14 12:33 KiloByte Assigned To => KiloByte


Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker