Robert Watson wrote: > On Mon, 19 May 2003, Terry Lambert wrote: > > According to chapter 12 of the "Go Solo 2" book, this is a bogus thing > > to do. Callers are required to take a critical section over the calls > > to the dl* functions because the dlerror() function uses a static buffer > > that can be overwritten in a multi-threaded environment. > > Sadly, that insight doesn't seem to have influenced the development > practices of a number of major application vendors :-(. Then I guess their software breaks on FreeBSD and several other platforms. Like Mozilla and Java break because they assume bad things about the scheduler not being able to switch threads on a priority basis following a return from an involuntary process preemption... If you're serious about making the FreeBSD implementation conform to some defacto "standard" defined by how people misuse API's, then it's probably about time that sockaddr_in didn't require its "unused" fields to be zeroed, just like Linux and Solaris let you leave crap in the "unused" portions of the structure. That's the main reason the SLPv2 reference implementation doesn't work on FreeBSD (it was written by a Linux weenie who grabbed his sockaddr_in on a stack variable, and failed to bzero it like FreeBSD needs, before filling in the entries we supposedly care about for the connect/bind calls). Alternately, when we run into non-conforming applications, we could send patches to the maintainers to make them conform, instead of bending ourselves into some twisted image of Linux... -- TerryReceived on Mon May 19 2003 - 21:45:47 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:08 UTC