Post

Replies

Boosts

Views

Activity

Reply to Task not executing at all
All right! I seem to have fixed it with your help! I had an async function to get image artwork to display in table view cells. Each cell would start a Task to call this function. The function would first attempt to get the media item's embedded artwork as UIImage by calling MPMediaItemArtwork.image(at:). If this returned nil for some reason, it would then attempt to fetch it via MusicKit using a MusicCatalogResourceRequest. This is why the function is async and why the cell makes the call in a Task. I split this function in two, one for the embedded artwork (sync) and one for MusicKit artwork (async). The cell calls the first one and only if that fails uses a Task to call the other one. Now it works and when I pause the app I find no 'com.apple.root.user-initiated-qos.cooperative' threads. I guess the takeaway is that that API is not thread safe but maybe you can provide some other insight given the above backtrace? Thank you!!
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22
Reply to Task not executing at all
Whoa very interesting. I have 6 of such threads and they all seem to be at the MPMediaItemArtwork.image(at:) call for different table cells. They are like this: thread #9, queue = 'com.apple.root.user-initiated-qos.cooperative'   frame #0: 0x00000002106bf5e0 libsystem_kernel.dylib`__ulock_wait + 8   frame #1: 0x000000010307abdc libdispatch.dylib`_dlock_wait + 56   frame #2: 0x000000010307a990 libdispatch.dylib`_dispatch_thread_event_wait_slow + 56   frame #3: 0x000000010308bc54 libdispatch.dylib`__DISPATCH_WAIT_FOR_QUEUE__ + 384   frame #4: 0x000000010308b594 libdispatch.dylib`_dispatch_sync_f_slow + 180   frame #5: 0x00000001f6ee6940 MusicLibrary`-[ML3ArtworkConfiguration supportedSizesForMediaType:artworkType:] + 248   frame #6: 0x00000001e37c64ec MediaPlayer`-[MPArtworkConfiguration supportedSizesForMediaType:artworkType:] + 68   frame #7: 0x00000001e3704290 MediaPlayer`-[MPMediaLibraryArtwork validSizes] + 120   frame #8: 0x00000001e379c814 MediaPlayer`-[MPMediaLibraryArtworkDataSource _existingRepresentationForArtworkCatalog:fromCacheOnly:] + 208   frame #9: 0x00000001e379c9c0 MediaPlayer`-[MPMediaLibraryArtworkDataSource existingRepresentationForArtworkCatalog:] + 48   frame #10: 0x00000001e363ac50 MediaPlayer`-[MPArtworkCatalog bestImageFromDisk] + 40   frame #11: 0x00000001e368e6a8 MediaPlayer`__70-[MPConcreteMediaItemArtwork initWithArtworkCatalog:allowsNetworking:]_block_invoke + 296 (...) That ulock_wait at the top seems to suggest there is a concurrency issue with this API, right? Or I might be using the wrong kind of queue! I will definitely watch that session. Thanks for the insight!!!!
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22
Reply to Task not executing at all
Kind of. I can run it in the simulator but the music library is not available in the simulator, so I mock some library items. In this scenario the bit that uses MPMediaItemArtwork is not run at all. I'm not seeing issues with Tasks there.
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22
Reply to Task not executing at all
New report: Started failing again Made minimal app with a Task and works fine Problematic app: I saw that Tasks initially work but eventually stop working. I pinned it down to the use of this API: https://developer.apple.com/documentation/mediaplayer/mpmediaitemartwork/1621736-image Attempting to get a UIImage out of a MPMediaItemArtwork object is enough to break it (!!!) Again, not all devices and possibly not all OS versions, even not every time I launch the app on the same device. But when it fails systematically, I comment out the above API usage and the issue is gone. Is this something you can investigate further?
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22
Reply to Task not executing at all
It is working now :-/ I've seen the issue before and eventually it fixed itself, I presumed from updating to a new OS beta. Now I see it works, it's the same app, same device and same OS version. I will report back if I see the issue again and do the minimal app test, thanks for replying!
Topic: Programming Languages SubTopic: Swift Tags:
Dec ’22