259 karma · joined February 14, 2011
I would imagine this is what leads to the 0.4% crash rate I mentioned at the top of the article :-(
Another commenter recommended touching a file at launch and at sleep to track untraceable crashes, which we do for various other reasons, but don't upload the stats. We may begin doing this.
However, imo the intention and semantics behind a call like CFMakeCollectable implies a transfer of ownership to an external system. A newbie Apple coder could be forgiven for thinking it would still transfer ownership in RC environments, just to the autorelease pool instead of a collector. In all likelihood this is what happened. An intern got at the code and didn't know the details about GC.
Obviously the point stands that this interpretation is well-documented to be false, but its naming is definitely misleading.
Double edit: I see from your edit that some of my basic assumptions about CFMakeCollectable were wrong, having never actually worked with it. My bad.
Doesn't it make sense to say that without the existence of Apple GC, the bug never would have existed? Doesn't that at least somewhat justify the title?
edit: Furthermore the original intent of including garbage collection in the title was as an ironic twist based on the fact that ios has never had garbage collection. Maybe that didn't convey as well as I would have liked.
This is because if memory usage gets too high, the OS will send a kill signal to the process, which can be neither detected nor caught.
This means that in our original decision to use this fix, all we had was anecdotal evidence of untraceable crashes. Luckily we had dedicated QA that was keeping pretty solid track of them all, and they piled up.
In our case I think it was worth it.
Either way bravo, great idea.
Then again, if you can do things like background non-essential operations, then the higher-level benefits can probably outweigh that.
In this case, however, our goal was to take common, familiar interfaces and idioms in Objective C, and make them safer/more powerful.
Something more like channels-like would be quite useful, but it would likely be published under a different project.
Obviously this can still be useful in read-heavy systems where the lock has to be held for long spans, but for our synchronized collections, we switched to std::mutex, which was massively faster.
They're hard to get right (probably not a problem for Apple), and their overhead usually counterbalances any potential performance gains (possibly a problem for the unwary developer).
We've got some optimization work to do :-)
It's like trying to get a bag o crap, but with a phone!(tm)
Also, being no stranger to... "problematic" launches, I can totally sympathize here.
Can't wait to see what you guys have in store with the new update, and as long as Cook or Schiller doesn't suddenly kick the bucket, I think you'll be fine with this one :-)
Seems like about the right amount of time for him to start really kicking things into high gear imo.
The fact that this "Look I'm a woman" and "Stuck up bitch" crap has been sitting here not getting downvoted (and even getting upvoted evidently), is a glaring indictment of the HN community overall. This is the kind of malicious shit people value, I guess.
Because Facebook hates Google, you're far less likely to see public posts turn up in Google results.
Google, on the other hand, created their network for the sole purpose of bolstering their search results. This leads to a much more adversarial relationship with the service, where you have to constantly fight to keep yourself out of the spotlight.