У меня очень странный провал. Приложение MusicBrainz Picard 1.3.2 при записи измененных аудиофайлов в сетевое хранилище (файловый сервер NAS_) иногда выдает сотни таких сообщений. Во время выдачи оно зависает с вращающимся пляжным мячом, пока я не выйду из него принудительно.
Что вызывает это зависание? Как я могу предотвратить это? Когда происходит зависание, что я могу сделать, чтобы перезагрузить компьютер, файловый сервер или соединение, чтобы зависание прекратилось?
Я буду голосовать за ответы, которые могут даже пролить свет на то, к чему afpfs_FindForkRef
относится. По какой-то причине, когда я ищу этот термин, я не получаю никаких результатов в поисковых системах Google и DuckDuckGo. Я предполагаю, что «afpfs» означает «Файловая система Apple Filing Protocol».
Вот журнал сообщений примерно в то время, когда я принудительно выхожу из зависшего приложения:
....
2016-09-03 23:38:15.000 kernel[0]: AFP_VFS afpfs_vnop_ioctl: afpfs_FindForkRef failed -1
2016-09-03 23:38:15.000 kernel[0]: AFP_VFS afpfs_vnop_ioctl: afpfs_FindForkRef failed -1
2016-09-03 23:38:15.000 kernel[0]: AFP_VFS afpfs_vnop_ioctl: afpfs_FindForkRef failed -1
2016-09-03 23:38:15.000 kernel[0]: *** kernel exceeded 500 log message per second limit - remaining messages this second discarded ***
2016-09-03 23:38:15.881 com.apple.xpc.launchd[1]: (org.musicbrainz.picard.79268[5403]) Service exited due to signal: Killed: 9
2016-09-03 23:38:20.927 SystemUIServer[1443]: Attempt to use XPC with a MachService that has HideUntilCheckIn set. This will result in unpredictable behavior: com.apple.backupd.status.xpc
2016-09-03 23:38:38.069 spindump[1708]: Saved hang report for MusicBrainz Picard version 1.3.2 (Picard 1.3.2) to /Library/Logs/DiagnosticReports/MusicBrainz Picard_2016-09-03-233838_MyMac.hang
Обратите внимание на сообщение «ядро превысило 500 сообщений журнала в секунду». Когда это приложение зависает, кажется, что оно генерирует это сообщение журнала так быстро, как позволяет его внутренний цикл.
Этого не произошло ранее сегодня, работая с другими данными. Это происходит сейчас. Это произошло несколько дней назад, по предыдущим данным. Тем временем что-то заставило его остановиться.
Другие приложения не вызывают эту проблему прямо сейчас. Если это приложение записывает данные на мой локальный диск, а не на файловый сервер NAS, проблема не возникает. Если я отключу и снова подключу файловый сервер, проблема возникнет снова. В прошлом, когда я перезапускал свой Mac и файловый сервер, проблема повторялась, но на этот раз я не пробовал.
Мой компьютер : MacBook Pro Retina, середина 2014 г., работающий под управлением OS X Yosemite 10.10.5.
Приложение : MusicBrainz Picard 1.3.2 , которое добавляет метаданные к аудиофайлам и перемещает файлы в целевой каталог.
Исходный путь : путь к музыкальному файлу на файловом сервере, например u'/Volumes/Qmultimedia/Music/_inbox/_tracks/Vancouver Academy of Music Symphony Orchestra/VAM Mozart Requiem 2014/02 Symphony No. 8 D. 759 "Unfinished"- I. Allegro moderato.flac'
(175 символов)
Путь назначения : путь к измененному музыкальному файлу на файловом сервере, например u'/Volumes/Qmultimedia/Music/master_tagged_files/Mozart, Wolfgang Amadeus, Schubert, Franz; Vancouver Academy of Music Symphony Orchestra, Dala, Leslie, Wood, Caitlin, Froese, Laurelle Jade, Rupolo, Rocco, Read, Zachary, Vancouver Bach Choir/Mozart Requiem _ Schubert _Unfinished_ Symphony/02 Symphony No. 8 in B minor, D. 759 _Unfinished__ I. Allegro moderato.flac'
(363 символа)
Файловый сервер : QNAP TS-219P , возраст около 5 лет.
Соединение : через запись в левой панели окна Finder «myServer (AFP)» с изображением окна сервера в качестве предварительного просмотра. КОГДА я щелкаю правой кнопкой мыши по этому значку и выбираю «Получить информацию» во всплывающем меню, появляется информационное окно. В нем «Общая информация» гласит: «Вид: Mac, Где: Сеть». «Дополнительная информация» гласит (вращающийся значок) с сообщением «Выборка…».
Том : сервер NAS имеет несколько томов файловой системы. Рассматриваемый том называется «Qmultimedia», с коробкой для диска и карикатурой на трех гуманоидов в качестве превью. КОГДА я щелкаю правой кнопкой мыши по этому значку и выбираю «Получить информацию» во всплывающем меню, появляется информационное окно. В нем «Генерал» гласит:
Server: afp://Gemini(AFP)._afpovertcp._tcp.local/Qmultimedia
Created: Sunday, 21. December, 2014 at 14:18
Modified: Today, 00:48
Format: AppleShare
Capacity: 2.95 TB
Available: 1.48 TB
Used: 1,474,284,388,352 bytes (1.47 TB on disk)
Отчет о зависании : в отчете о зависании, /Library/Logs/DiagnosticReports/MusicBrainz Picard_2016-09-03-233838_MyMac.hang, много всего, но вот некоторые основные моменты:
Event: hang
Duration: 4.70s (process was unresponsive for 31 seconds before sampling)
Steps: 48 (100ms sampling interval)
Heaviest stack for the main thread of the target process:
48 start + 52 (MusicBrainz Picard + 3044) [0x100000be4]
48 main + 650 (MusicBrainz Picard + 4474) [0x10000117a]
48 py2app_main + 2683 (MusicBrainz Picard + 10075) [0x10000275b]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 943050) [0x1040353ca]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 942382) [0x10403512e]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 792742) [0x1040108a6]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 792454) [0x104010786]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 785344) [0x10400ebc0]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 792454) [0x104010786]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 789242) [0x10400fafa]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 792454) [0x104010786]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 785344) [0x10400ebc0]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 792454) [0x104010786]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 787402) [0x10400f3ca]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 784253) [0x10400e77d]
48 ??? (<F57E8887-372A-E630-588B-1148CCA29919> + 3464844) [0x107efbe8c]
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 1324428) [0x10918158c]
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 1314468) [0x10917eea4]
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 1313524) [0x10917eaf4]
48 ??? (<CD803C71-F94D-524C-1A39-07D1A339A0F0> + 272000) [0x108485680]
48 -[NSApplication run] + 594 (AppKit + 551667) [0x7fff837caaf3]
48 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346 (AppKit + 593496) [0x7fff837d4e58]
48 _DPSNextEvent + 978 (AppKit + 596139) [0x7fff837d58ab]
48 _BlockUntilNextEventMatchingListInModeWithFilter + 71 (HIToolbox + 205099) [0x7fff8f07812b]
48 ReceiveNextEventCommon + 179 (HIToolbox + 205294) [0x7fff8f0781ee]
48 RunCurrentEventLoopInMode + 235 (HIToolbox + 206191) [0x7fff8f07856f]
48 CFRunLoopRunSpecific + 296 (CoreFoundation + 465880) [0x7fff887abbd8]
48 __CFRunLoopRun + 927 (CoreFoundation + 467391) [0x7fff887ac1bf]
48 __CFRunLoopDoSources0 + 269 (CoreFoundation + 469901) [0x7fff887acb8d]
48 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 (CoreFoundation + 526849) [0x7fff887baa01]
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 1323008) [0x109181000]
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 1317852) [0x10917fbdc]
48 ??? (<F57E8887-372A-E630-588B-1148CCA29919> + 3461518) [0x107efb18e]
48 ??? (<CD803C71-F94D-524C-1A39-07D1A339A0F0> + 588900) [0x1084d2c64]
48 ??? (<CD803C71-F94D-524C-1A39-07D1A339A0F0> + 562669) [0x1084cc5ed]
48 ??? (<F57E8887-372A-E630-588B-1148CCA29919> + 3465277) [0x107efc03d]
48 ??? (<CFFC31D5-41BF-BC16-2650-C745627427E7> + 26259) [0x104715693]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 933631) [0x104032eff]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 759914) [0x10400886a]
48 ??? (<96E177D6-BA68-399D-7325-FAA0DD7247EB> + 1026148) [0x104049864]
48 __psynch_cvwait + 10 (libsystem_kernel.dylib + 90422) [0x7fff8275b136]
*48 psynch_cvcontinue + 0 (pthread + 26910) [0xffffff7f80f9991e]
....
Thread 0x13ac3a 48 samples (1-48) priority 31 cpu time 4.697s
<thread QoS legacy, boosted, received importance donation from WindowServer [189], IO policy important>
48 thread_start + 13 (libsystem_pthread.dylib + 5101) [0x7fff8dd113ed] 1-48
48 _pthread_start + 176 (libsystem_pthread.dylib + 16343) [0x7fff8dd13fd7] 1-48
48 _pthread_body + 131 (libsystem_pthread.dylib + 16474) [0x7fff8dd1405a] 1-48
48 ??? (<4172EABD-46BE-2722-C849-F7FB5632DED2> + 161492) [0x1090656d4] 1-48
....
48 __fcntl + 10 (libsystem_kernel.dylib + 88482) [0x7fff8275a9a2] 1-48
*34 hndl_unix_scall64 + 22 (kernel + 2311718) [0xffffff8000434626] 1-34
....
*1 hndl_unix_scall64 + 10 (kernel + 2311706) [0xffffff800043461a] (running) 35
*13 hndl_unix_scall64 + 22 (kernel + 2311718) [0xffffff8000434626] 36-48
....
Записи, вложенные ниже, hndl_unix_scall64
похоже, связаны с сообщениями журнала, поэтому я предполагаю, что сообщения поступают оттуда. Я предполагаю, что этот символ hndl_unix_scall64
находится рядом с тем местом, где вызовы идут не так, как надо.
Обновлено 4 сентября 2016 г .: добавлены примеры исходного и целевого путей. Также добавьте этот диагноз. Когда я использую внутренний сценарий Picard для усечения длины его сегментов пути до 160 символов, сохранение файла завершается успешно. Они afpfs_FindForkRef failed -1
по-прежнему сыплются в лог консоли сотнями, но всего на пару секунд. Затем они останавливаются, и Пикард не виснет. Таким образом, может иметь значение общая длина пути или длина сегментов пути.
Из экспериментов, вот обходной путь.
Используйте сценарии Пикарда , чтобы ограничить длину каждого сегмента пути, в который вы переименовываете музыкальные файлы. Это предотвращает длительное зависание, что отвечает на один из вопросов.
В параметрах именования файлов Picard используйте функцию сценария $truncate(field,length)
, чтобы ограничить размер каждого сегмента пути. Таким образом, вместо:
$if2(%albumartistsort%,%artist%)/%album/ $if($gt(%totaldiscs%,1),%discnumber%)$num(%tracknumber%,2) %title%
используйте это (и ограничение 160 является произвольным; 300 и 100 также работают):
$truncate($if2(%albumartistsort%,%artist%),160)/$truncate(%album%,160)/ $truncate($if($gt(%totaldiscs%,1),%discnumber%)$num(%tracknumber%,2) %title%,160)
Нет никаких доказательств того, что зависание является государственной проблемой. Кажется, это воспроизводимо провоцируется поведением приложения. Таким образом, помимо изменения сценария, который вы запускаете в Picard, нет необходимости перезагружать компьютер или сервер. Это отвечает еще на один из вопросов.
Это все еще не отвечает, что вызывает это зависание и как предотвратить его первопричину.
Джим ДеЛаХант
afpfs_FindForkRef
. Тем не менее, это дает другим обходной путь и устанавливает более низкую планку для других ответов.