The iOS Bug Chase
Article Summary
An Allegro engineer spent weeks hunting a MapKit bug so elusive it disappeared and reappeared randomly across devices. The investigation went from Swift code to assembly to a conversation in San Francisco.
This deep dive from Allegro's iOS team chronicles the hunt for a mysterious MapKit bug that prevented users from selecting parcel machines for delivery. What started as a single QA report turned into a multi-layer investigation spanning network analysis, framework decompilation, and private API exploration.
Key Takeaways
- Bug caused HTTP 410 errors for map tiles, affecting iOS Maps systemwide
- Used mitmproxy to intercept traffic and Hopper to decompile GeoServices.framework
- Discovered 4-year-old bug in Apple's geo_manifest handling, fixed in iOS 10
- Filed radar report that directly contributed to Apple's fix
A systematic debugging approach using network interception and framework decompilation helped identify and report a 4-year-old iOS bug that Apple fixed in the next release.
About This Article
Allegro's iOS app had intermittent MapKit failures where map tiles wouldn't load on multiple devices. This affected tens of thousands of daily active users who couldn't select parcel machines during checkout.
Kamil Borzym intercepted network traffic with mitmproxy and found HTTP 410 responses. He then decompiled GeoServices.framework using Hopper to find the GEOResourceManifestManager class, which handled manifest version management.
The bug report (rdar://25267344) led to Apple fixing a 4-year-old geo_manifest bug in iOS 10 beta 1. This fixed map functionality across iOS without requiring workarounds in individual apps.