J'ai une application de partage de fichiers qui fonctionne comme DropBox et Google Drive. L'application fonctionne bien sous Mac OS Sierra 10.3.2 et plus. Cependant, lorsque nous mettons à jour l'OS vers High Sierra (10.3.3), l'application se bloque. Apple est passé d'Openssl à Libressl lors de la mise à jour.
Scénario .
J'ai un dossier de synchronisation contenant 25 000 fichiers. Le comportement souhaité est que l'application pousse ces fichiers vers le serveur.
Comportement .
Après les 1000 fichiers, l'application se bloque. D'après les journaux de crash, il semble que l'application se bloque sur libcrypto.35.dylib.
Théories .
J'ai quelques théories sur ce qui se passe ici.
-
J'ai une condition de course dans l'application qui a été exposée dans la mise à jour de l'OS. Cela expliquerait pourquoi je ne le vois pas dans les versions précédentes de Mac OS.
-
Il y a un bug dans la nouvelle version de Libressl d'Apple. Cependant, je n'ai pas vu beaucoup de plaintes à ce sujet.
Rapport sur le crash du fil de discussion
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
Question
- Y a-t-il un bogue dans High Sierra qui explique ce comportement/rapport d'accident ?
- Sinon, quelles sont les causes possibles de ce crash ?