19 ms·
I can't say I'm surprised. I used to be responsible for the port and upkeep of a relatively low level product to OS X. It was far and away the most troublesome
by itp 10y ago
I can't say I'm surprised. I used to be responsible for the port and upkeep of a relatively low level product to OS X. It was far and away the most troublesome platform. We would frequently run into bugs that had been reported on openradar for years without having been addressed.
Off hand I remember spending the better part of two days trying to understand a bug that was traced to a coroutine issue -- OS X was just not saving a required register, known and reported for 5 major versions.
I remember discovering that unnamed semaphores don't work on OS X. Not that the functions aren't implemented, just that they always return an error.
So I'm not surprised that poll() would be broken, nor am I surprised that it's broken again.
The only thing that surprised me anymore is how many people continue to insist to me that OS X (or macOS now, I guess) is a great UNIX. It may be a great desktop OS.
- tpush 10y ago"I remember discovering that unnamed semaphores don't work on OS X" Yeah, Posix semaphores don't work on macOS. Confusingly, support for unnamed semaphores exists however in Apple's libdispatch, using dispatch_semaphore_t. Don't ask me why.
- valleyer 10y agoYup. dispatch_semaphore_t uses Mach semaphores under the cover. (Totally separate from POSIX semaphores.)
- gpderetta 10y agoThe worst part is that sometimes in the past OSX had actually passed Unix conformance. It only shows that those conformance tests are worth nothing. edit: iOS->OSX
- Tepix 10y agoWhat does iOS have to do with this?
- gpderetta 10y agosorry I meant OSX obviously.
- geofft 10y agomacOS still does pass conformance tests, apparently. Or at least has a license to the UNIX trademark. http://www.opengroup.org/openbrand/register/apple.htm http://www.opengroup.org/openbrand/register/apple.htm I wonder if the Open Group will accept a bug report? From http://www.opengroup.org/openbrand/ http://www.opengroup.org/openbrand/ : "Anyone buying a Registered Product is guaranteed that: The product conforms to the identified Product Standard. ... The product will continue to conform. ... Any conformance problem will be fixed within the prescribed timescale." The poll issue is a clear violation of the UNIX spec. http://pubs.opengroup.org/onlinepubs/7908799/xsh/poll.html http://pubs.opengroup.org/onlinepubs/7908799/xsh/poll.html
- gpderetta 10y agoTo be honest, I'm not 100% sure this poll issue violates the the letter of the standard, although possibly the spirit. Per POSIX, fds must point to an array of pollfds, passing null is a precondition violation and POSIX explicitly says that is UB.
- JdeBP 10y agoIronically, given all of the commentary about whether it's conformant for an array passed to a function to have NULL as its starting address, that is not actually the bug here. The bug, as indirectly explained by the headlined article, is actually to do with the array length being zero.
- matwood 10y agoSierra + the lack of MBP updates has me seriously looking around if I can switch to Linux for my next setup. The Dell 5500 laptops look nice, and I have purposely kept my tools as platform agnostic as possible. So far my list of problems are: * HiDPI does not seem to work as well on other platforms. * Lightroom is a pain to run over wine or some other tool (and no, Darktable is not there yet) * 1Password still has no linux client * I like the iPhone and do not plan to move away anytime soon * iOS app builds - not really a problem to keep my old MBP around just for doing builds I have been using linux for years on the server and I'm really amazed how short this list has become.
- spullara 10y agoHaving just setup my gaming PC with an external SSD that can boot up as a ubuntu based machine learning workstation, I wholeheartedly agree. Desktop linux is brutally bad. At least they finally fixed the fonts. My current desktop is split into two because my 4k monitor which uses dual-dp is recognized as two monitors. Also, I had to install Nvidia drivers myself post install on a 640x480 desktop. The whole thing is laughable. It was much easier getting nvidia-docker, tensor flow and caffe running than getting the desktop to limp along.
- AsyncAwait 10y agoEquating Ubuntu with Linux is pretty inaccurate. I would recommend giving something with GNOME 3.22, like Arch or Gentoo a serious try instead.
- tpush 10y agoYeah, I don't Arch or Gentoo are good recommendations if one of his complaints is having to manually install a driver.
- AsyncAwait 10y agoThey're easy to deal with once installed and have the latest drivers/are more likely to work with latest hardware. You can use something like https://antergos.com https://antergos.com to install Arch and https://www.sabayon.org https://www.sabayon.org for Gentoo.
- naaaaak 10y ago> We would frequently run into bugs that had been reported on openradar for years without having been addressed. In over a decade of submitting bug reports to Apple, they've only ever fixed a few of my issues. Most of my reports are easy to reproduce and test. I'm better off spending my time doing clean room reimplementations of whatever their API promises or just scrapping whatever I wanted to do than even wasting time reporting bugs. "Radar Radar Radar" is all they ever ask. I don't care anymore. The whole process is opaque with no guarantees of a fix or a workaround; it'a unworthy of my time. They have over $100 billion in cash - about time they start testing and fixing more of their own issues.
- kazinator 10y ago> They have over $100 billion in cash - about time they start testing and fixing more of their own issues. Why would any organization with all that cash worry about fixing issues. They were showered with money in spite of those issues, so they must not matter. So if anything, the bigger and richer they get, the less inclined they are to fix issues. Unless they perceive that there is a looming threat, and certain issues are seen as connected with it.
- jandrese 10y agoHFS+ in general makes my butt pucker. It's the only one that occasionally eats itself under regular use. Usually so badly that a restore from backup is the only solution. It's not like Apple doesn't have the cash either. They could take some of the money that is trapped overseas for tax reasons and open up a field office somewhere (Ireland? China?) who's only job is to run through Radar from top to bottom and close out/fix every issue.
- 0x0 10y agoYou're in luck, there's the new APFS in store for macOS 10.13 :)
- wlesieutre 10y ago
- duaneb 10y agoThe main difference is the shitty interface on Linux is intentional.
- duaneb 10y agoPost edit: the above was fascetious. Linux is excellent but is also clearly the product of many years of community evolution, and it shows in its many quirks.
- e40 10y agoIf you don't upgrade until xx.yy.5, then it is a great UNIX. By "dot dot 5" they've usually fixed the things they fucked up in dot dot 0. This means I'm a year behind, but I can run the latest in a VM (VMware Fusion is awesome) for testing and builds, etc.
- newscracker 10y agoThere seems to be a general lack of interest in maintaining the underlying UNIX system well at Apple, for various reasons. It's frustrating that a large company with a lot of money is unable to handle OS projects with the seriousness and attention to detail that they deserve. Wanting to release a new version of the OS every year with some shiny new features for the end user should be balanced with stabilizing and improving things under the hood. I'm deeply disappointed that such focus on the Mac and macOS is lacking.
- pjmlp 10y agoUNIX never matter to the Apple culture. They were never committed to it with A/UX and for NeXT it was just a way to bring in software from the blooming UNIX workstations market. I remember back in the early 2003, they came to CERN trying to promote the idea of using Mac OS X for research because of the UNIX compatibility. In both cases, NeXT (aka Apple) needed the developers to help grow their diminishing market. Now they have the upper hand and don't need UNIX compatibility more than they already offer, and the non-UNIX layers is what matters. They are not alone, just look at Google efforts with Brillo, Fuchsia and removal of insecure UNIX V APIs in Android.
- kazinator 10y agoI think Jobs did believe in Unix, as a way to have a system that doesn't fall down all the time; just he wasn't perhaps on board with all the crusty bits that come with Unix.
- valarauca1 10y agoMore likely it was that Mach was a fully functional free OS. Next only had to slap a GUI toolkit on top of to have their own OS. Also as it was a teaching OS, so it was easy to find reference material + developers. Microsoft more or less did the same thing with OpenBSD and NT kernel. Several kernel sections started out as BSD code (the networking stack for example). Don't forget Jobs attempted to steal NeXt's fork of the GCC with Obj-C extensions. The FSF had to sue NeXt to get them to release their modifications. Stealing Free Software is cheap from a business perspective.
- etatoby 10y ago> how many people continue to insist to me that OS X is a great UNIX. It may be a great desktop OS Between 10.2 and 10.8 it was both, culminating on 10.5 and 10.6, the crown jewels IMHO. After 10.8 it took a definite turn for the worse, acquiring the worst of 'modern' practices and slashing many historic features that users loved, from user-friendly stuff to power user shortcuts and customizations. I haven't even tried 10.12. The previous releases (10.9 through 10.11) have thoroughly butchered the interface, usability, compatibility, performance, and UNIX-level features. I'm now back on GNU/Linux (Mint 18 Cinnamon) and I'm loving it! I have yet to find a feature or program I'm missing, while many things are so much easier. (Focus follows mouse, middle button paste, and Alt + window dragging, how I missed you! Not to mention apt-get)
- coldtea 10y ago>I haven't even tried 10.12. The previous releases (10.9 through 10.11) have thoroughly butchered the interface, usability, compatibility, performance, and UNIX-level features. Anything specific? Because I don't find anything "butchered", apart from the usual assortment of bugs.
- eppsilon 10y agoMulti-monitor support got pretty effed up around 10.7 or 10.8. It had something to do with the new full screen app mode. It seems like 10.6 is the agreed-upon high point for macOS - then the porting of iOS designs/features (remember those linen textures?) resulted in more UX issues and bugs than usual. Thankfully it has improved significantly since then, though.
- coldtea 10y ago>Multi-monitor support got pretty effed up around 10.7 or 10.8. It had something to do with the new full screen app mode. Might be -- I'm using just one external monitor, so don't know. That said "multi-monitor support suffered badly for a version or so" is rather anti-climatic after "butchered".
- shinratdr 10y ago
- kazinator 10y agoOn Mac OS, you must initialize Mac-OS-specific members of struct sockddr_in to zero, or it won't bind a local listening socket. You can't fill in just the address family, address and port. E.g. http://www.kylheku.com/cgit/txr/commit/?id=8bc6ba624272e9df414358195025cd696c491ad9 http://www.kylheku.com/cgit/txr/commit/?id=8bc6ba624272e9df4...
- raimue 10y agoIt is generally a good idea not to pass unitialized struct members. Since the BSD socket API is meant to be extensible, new struct members could be added at any time. Enforcing this rule leads to more robust and portable code.
- kazinator 10y agoThat is simply nonsense. The members are not documented in POSIX or anywhere else. The API is extensible in that we can introduce new address types, and overlay new structures. You can implement a new network "foo", then in the API add AF_FOO address family enumeration and a struct sockaddr_foo which exhibits whatever members you want (which are documented and must be initialized). The AF_INET family has only sin_family, sin_addr and sin_port. If we init these, we are good to go. If you want a struct similar to struct sin_addr, but with more fields that are user-visible and must be initialized, you must introduce a new derived type AF_INET_SPECIAL along with struct sockaddr_in_special. > Enforcing this rule leads to more robust and portable code. Enforcing this rule ensures that correct code that works everywhere breaks on (i.e. does not cleanly port to) Mac OS.
- raimue 10y agoFreeBSD also has the same .sin_len member that macOS uses. If you still do not believe me that this is allowed, here is the relevant section in POSIX.1-2008: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net... > The <netinet/in.h> header shall define the sockaddr_in structure that includes at least the following members: [...] The "at least" is the keyword. Additional members in the struct are allowed by POSIX. You have to expect and handle them according to the standard.
- sigcode 10y agoBut, it is "Certified UNIX". http://www.unix.org/what_is_unix/history_timeline.html http://www.unix.org/what_is_unix/history_timeline.html I liked OS9 better. I never understood the move to OSX, which instantly made all OS9 software perform worse or not perform at all. It is nice that Apple tried to make UNIX users a little more at home with a BSD-like userland. But BSD, Linux, Plan9 all have better kernels than Apple.
- oneplane 10y agoopenradar isn't Apple's radar thingy, so posting anything there won't do anything Apple-wise.
- noobermin 10y agoIt feels like I am the one crying out in the wilderness. I not been a developer on mac OS but I use it for computational science and the user experience in the CLI is terrible compared to linux. I'm not convinced the desktop is great either. Sure, the visual polish is better (font rendering is much better on OS X), but things like windowing, workspaces I find was much more my speed on Gnome 3.
- charlesism 10y ago> troublesome From the bottom of my heart, I want to thank you for using a word aside from "problematic."