Tengo una aplicación para compartir archivos que funciona como DropBox y Google Drive. La aplicación funciona bien en Mac OS Sierra 10.3.2 y versiones anteriores. Sin embargo, cuando actualizamos el sistema operativo a High Sierra (10.3.3), la aplicación se bloquea. Apple se mudó de Openssl a Libressl en la actualización.
Escenario .
Tengo una carpeta de sincronización con 25,000 archivos. El comportamiento deseado es que la aplicación envíe esos archivos al servidor.
Comportamiento .
Después del archivo 1000, la aplicación falla. De los registros de fallos, parece que se bloquea en libcrypto.35.dylib
Teorías .
Tengo algunas teorías sobre lo que está sucediendo aquí.
-
Tengo una condición de carrera en la aplicación que se ha expuesto en la actualización del sistema operativo. Esto explicaría por qué no lo veo en las versiones anteriores de Mac OS.
-
Hay un error en la nueva versión de Libressl de Apple. Sin embargo no he visto muchas quejas sobre este tema.
Informe de subprocesos de bloqueos
Process: fileSync [8888]
Path: /Applications/file Synce.app/Contents/MacOS/File Sync
Identifier: com.hds.osx.fss.File-Sync
Version: 9.0.0
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: File Sync [8888]
User ID: 503
Date/Time: 2018-03-22 16:28:17.837 -0400
OS Version: Mac OS X 10.13.3 (17D47)
Report Version: 12
Anonymous UUID: FBE3606C-ABD0-D8A2-E971-ADD1A3955EFC
Sleep/Wake UUID: 45EAC198-3478-40FC-B89A-613ECA3EB94A
Time Awake Since Boot: 150000 seconds
Time Since Wake: 6000 seconds
System Integrity Protection: enabled
Crashed Thread: 12
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: EXC_I386_GPFLT
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [0]
Thread 12 Crashed:
0 libcrypto.35.dylib 0x00007fff51d47ffa ERR_STATE_free + 58
1 libcrypto.35.dylib 0x00007fff51d48fac int_thread_del_item + 252
2 libcrypto.35.dylib 0x00007fff51d47f78 ERR_remove_thread_state + 104
3 libcurl.4.dylib 0x00007fff5205a25b Curl_close + 186
4 libcurl.4.dylib 0x00007fff52075c08 curl_multi_cleanup + 227
5 com.hds.osx.fss.File-Sync 0x000000010cc3e317 CurlHttpClient::~CurlHttpClient() + 263
6 com.hds.osx.fss.File-Sync 0x000000010cd430ab AwRestClient::QueryFileSystemChanges(unsigned long long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, AwFileSystemChangeList&, AwRestResponse&) + 539
7 com.hds.osx.fss.File-Sync 0x000000010ccd9fb7 AwFssMgr::PullRemoteChangesPrivate(unsigned long long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long long&, unsigned int&) + 471
8 com.hds.osx.fss.File-Sync 0x000000010ccd9c36 AwFssMgr::PullRemoteChanges(unsigned long long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, bool, unsigned int&) + 214
9 com.hds.osx.fss.File-Sync 0x000000010cc72c46 AwController::RemoteNotificationListeningThread() + 2950
10 com.hds.osx.fss.File-Sync 0x000000010cc720ad AwController::RemoteNotificationListeningThread(void*) + 29
11 libsystem_pthread.dylib 0x00007fff539e66c1 _pthread_body + 340
12 libsystem_pthread.dylib 0x00007fff539e656d _pthread_start + 377
13 libsystem_pthread.dylib 0x00007fff539e5c5d thread_start + 13
Pregunta
- ¿Hay algún error en High Sierra que explique este comportamiento / informe de errores?
- Si no, ¿cuáles son las posibles causas de este accidente?