gershnik / wsdd-native

Make your Linux/macOS/BSD/illumos machine visible in Network view of Windows Explorer
BSD 3-Clause "New" or "Revised" License
35 stars 3 forks source link

[SOLVED] My (failed) attempts to install wsdd-native on a 10-year old Mac with macOS Big Sur #13

Closed GwynethLlewelyn closed 4 months ago

GwynethLlewelyn commented 4 months ago

Hi there! 👋

First and foremost: thank you for developing such an awesome tool. For five years or so, my co-living partner (who only uses Windows) is utterly unable to see any machine on the network, except for the printer (which does use WSDD) and the Synology NAS (which apparently also uses WSDD, but what exactly they use to implement it is unknown — it seems to work "as by magic"). Other machines in the network include my personal Mac, a Raspberry Pi, a laptop 20running Linux, and who knows what else. None of these will be seen by her Windows 10 machine(s), although the opposite works (to a degree)!

Anyway, time to get your nice little native tool working!

I've started with my ancient Mac. It's a MacBook Pro (Retina, 15-inch, Mid 2014) running macOS 11.7.9. I'm well aware this is both ancient hardware and unsupported software, both having reached EOL for years now. It's a pity because the machine works flawlessly (it did get repaired a few times; not all components inside it are from 2014!). Since it's also my "work" machine — and I cannot afford to replace it — it means that I'm limited to the degree of tinkering I'm willing to do.

A very annoying issue is that the Homebrew team clings to Apple's mandatory obsolescence rules, and they refuse to go that back in time. While macOS Big Sur flawlessly runs all things installed via Homebrew, these days, everything non-casked requires localy compiling packages, which obviously takes eternities and might fail. In some cases, I managed to get things compiling by switching from the Apple-provided clang to, say, GCC. In others i required a bit more work. And many I simply couldn't figure out how to compile things properly. That said... wsdd-native gets flawlessly installed via Homebrew, and, as far as I can see, it does configure itself properly, hooks itself up wth launchd, etc.

Unfortunately, however, any attempt to actually run it will terminate with a Segmentation fault: 11. I tried to enable core dumps using sudo launchctl limit core unlimited, but nothing is ever written to /cores (as the man page suggests). I'm aware that you don't recommend using something that old (e.g., the MacOSX13.0 SDK is a requirement) and thus the access error to invalid memory, possibly when attempting to load something from a shared library which is not in the 'expected' place (or doesn't exist at all).

So, the best I can offer is a dump from otool as I see on my system:

Dump of otool -LIvPC /usr/local/bin/wsddn
```sh $ /usr/local/bin/wsddn: /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0) time stamp 2 Thu Jan 1 01:00:02 1970 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 1296.0.1) time stamp 2 Thu Jan 1 01:00:02 1970 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory (compatibility version 1.0.0, current version 1.0.0) time stamp 2 Thu Jan 1 01:00:02 1970 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 2048.1.255) time stamp 2 Thu Jan 1 01:00:02 1970 /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1600.151.0) time stamp 2 Thu Jan 1 01:00:02 1970 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.0.0) time stamp 2 Thu Jan 1 01:00:02 1970 Linker optimiztion hints (0 total bytes) Indirect symbols for (__TEXT,__stubs) 303 entries address index name 0x0000000100003f80 148 _CFAllocatorAllocate 0x0000000100003f86 149 _CFAllocatorDeallocate 0x0000000100003f8c 150 _CFArrayCreate 0x0000000100003f92 151 _CFArrayGetCount 0x0000000100003f98 152 _CFArrayGetValueAtIndex 0x0000000100003f9e 153 _CFDictionaryCreate 0x0000000100003fa4 154 _CFDictionaryGetTypeID 0x0000000100003faa 155 _CFDictionaryGetValue 0x0000000100003fb0 157 _CFErrorCopyDescription 0x0000000100003fb6 158 _CFErrorGetCode 0x0000000100003fbc 159 _CFErrorGetDomain 0x0000000100003fc2 160 _CFGetTypeID 0x0000000100003fc8 162 _CFRelease 0x0000000100003fce 163 _CFRetain 0x0000000100003fd4 164 _CFStringCompare 0x0000000100003fda 165 _CFStringCreateWithCharacters 0x0000000100003fe0 166 _CFStringCreateWithCharactersNoCopy 0x0000000100003fe6 167 _CFStringGetCStringPtr 0x0000000100003fec 168 _CFStringGetCharacters 0x0000000100003ff2 169 _CFStringGetCharactersPtr 0x0000000100003ff8 170 _CFStringGetLength 0x0000000100003ffe 171 _CFStringGetTypeID 0x0000000100004004 172 _ODNodeCopyRecord 0x000000010000400a 173 _ODNodeCreateRecord 0x0000000100004010 174 _ODNodeCreateWithNodeType 0x0000000100004016 175 _ODQueryCopyResults 0x000000010000401c 176 _ODQueryCreateWithNode 0x0000000100004022 177 _ODRecordCopyValues 0x0000000100004028 178 _ODRecordSetValue 0x000000010000402e 179 _ODRecordSynchronize 0x0000000100004034 180 _SCDynamicStoreCopyValue 0x000000010000403a 181 _SCDynamicStoreCreate 0x0000000100004040 183 __Unwind_Resume 0x0000000100004046 186 __ZNKSt3__110error_code7messageEv 0x000000010000404c 191 __ZNKSt3__14__fs10filesystem4path10__filenameEv 0x0000000100004052 192 __ZNKSt3__14__fs10filesystem4path11__root_nameEv 0x0000000100004058 193 __ZNKSt3__14__fs10filesystem4path13__parent_pathEv 0x000000010000405e 194 __ZNKSt3__14__fs10filesystem4path16__root_directoryEv 0x0000000100004064 195 __ZNKSt3__14__fs10filesystem4path3endEv 0x000000010000406a 196 __ZNKSt3__14__fs10filesystem4path5beginEv 0x0000000100004070 197 __ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE 0x0000000100004076 198 __ZNKSt3__16locale9has_facetERNS0_2idE 0x000000010000407c 199 __ZNKSt3__16locale9use_facetERNS0_2idE 0x0000000100004082 200 __ZNKSt3__18ios_base6getlocEv 0x0000000100004088 202 __ZNSt11logic_errorC1EPKc 0x000000010000408e 203 __ZNSt11logic_errorC1ERKS_ 0x0000000100004094 204 __ZNSt11logic_errorC2EPKc 0x000000010000409a 205 __ZNSt11logic_errorC2ERKS_ 0x00000001000040a0 206 __ZNSt11logic_errorD1Ev 0x00000001000040a6 207 __ZNSt11logic_errorD2Ev 0x00000001000040ac 209 __ZNSt12out_of_rangeD1Ev 0x00000001000040b2 210 __ZNSt13exception_ptrC1ERKS_ 0x00000001000040b8 211 __ZNSt13exception_ptrD1Ev 0x00000001000040be 212 __ZNSt13exception_ptraSERKS_ 0x00000001000040c4 213 __ZNSt13runtime_errorC1EPKc 0x00000001000040ca 214 __ZNSt13runtime_errorC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE 0x00000001000040d0 215 __ZNSt13runtime_errorC2EPKc 0x00000001000040d6 216 __ZNSt13runtime_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE 0x00000001000040dc 217 __ZNSt13runtime_errorC2ERKS_ 0x00000001000040e2 219 __ZNSt13runtime_errorD2Ev 0x00000001000040e8 221 __ZNSt20bad_array_new_lengthC1Ev 0x00000001000040ee 223 __ZNSt3__112__next_primeEm 0x00000001000040f4 224 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc 0x00000001000040fa 225 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcm 0x0000000100004100 226 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEmc 0x0000000100004106 227 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEmc 0x000000010000410c 228 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc 0x0000000100004112 229 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_ 0x0000000100004118 230 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev 0x000000010000411e 231 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_ 0x0000000100004124 232 __ZNSt3__112system_errorC1ENS_10error_codeE 0x000000010000412a 233 __ZNSt3__112system_errorC1ENS_10error_codeEPKc 0x0000000100004130 234 __ZNSt3__112system_errorC1ENS_10error_codeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE 0x0000000100004136 235 __ZNSt3__112system_errorD1Ev 0x000000010000413c 238 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERd 0x0000000100004142 239 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5writeEPKcl 0x0000000100004148 242 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED2Ev 0x000000010000414e 243 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEx 0x0000000100004154 244 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy 0x000000010000415a 245 __ZNSt3__113random_deviceC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE 0x0000000100004160 247 __ZNSt3__113random_deviceclEv 0x0000000100004166 250 __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev 0x000000010000416c 251 __ZNSt3__114error_categoryD2Ev 0x0000000100004172 259 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev 0x0000000100004178 260 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev 0x000000010000417e 261 __ZNSt3__115recursive_mutexC1Ev 0x0000000100004184 262 __ZNSt3__115recursive_mutexD1Ev 0x000000010000418a 263 __ZNSt3__115system_categoryEv 0x0000000100004190 264 __ZNSt3__116generic_categoryEv 0x0000000100004196 265 __ZNSt3__118condition_variable10notify_oneEv 0x000000010000419c 266 __ZNSt3__118condition_variableD1Ev 0x00000001000041a2 267 __ZNSt3__119__shared_weak_count14__release_weakEv 0x00000001000041a8 268 __ZNSt3__119__shared_weak_countD2Ev 0x00000001000041ae 269 __ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE 0x00000001000041b4 270 __ZNSt3__14__fs10filesystem4path8iterator11__incrementEv 0x00000001000041ba 271 __ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE 0x00000001000041c0 272 __ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE 0x00000001000041c6 273 __ZNSt3__15mutex4lockEv 0x00000001000041cc 274 __ZNSt3__15mutex6unlockEv 0x00000001000041d2 275 __ZNSt3__15mutexD1Ev 0x00000001000041d8 276 __ZNSt3__16chrono12steady_clock3nowEv 0x00000001000041de 277 __ZNSt3__16chrono12system_clock3nowEv 0x00000001000041e4 278 __ZNSt3__16chrono12system_clock9to_time_tERKNS0_10time_pointIS1_NS0_8durationIxNS_5ratioILl1ELl1000000EEEEEEE 0x00000001000041ea 280 __ZNSt3__16locale5facetD2Ev 0x00000001000041f0 281 __ZNSt3__16locale7classicEv 0x00000001000041f6 282 __ZNSt3__16localeC1ERKS0_ 0x00000001000041fc 283 __ZNSt3__16localeC1Ev 0x0000000100004202 284 __ZNSt3__16localeD1Ev 0x0000000100004208 285 __ZNSt3__16localeaSERKS0_ 0x000000010000420e 286 __ZNSt3__16thread4joinEv 0x0000000100004214 287 __ZNSt3__16threadD1Ev 0x000000010000421a 288 __ZNSt3__18ios_base4initEPv 0x0000000100004220 289 __ZNSt3__18ios_base5imbueERKNS_6localeE 0x0000000100004226 291 __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev 0x000000010000422c 292 __ZNSt3__19to_stringEi 0x0000000100004232 293 __ZNSt3__19to_stringEj 0x0000000100004238 294 __ZNSt3__19to_stringEm 0x000000010000423e 295 __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_ 0x0000000100004244 296 __ZNSt8bad_castC2Ev 0x000000010000424a 297 __ZNSt8bad_castD2Ev 0x0000000100004250 298 __ZNSt9bad_allocC1Ev 0x0000000100004256 300 __ZNSt9exceptionD2Ev 0x000000010000425c 301 __ZSt17current_exceptionv 0x0000000100004262 302 __ZSt17rethrow_exceptionSt13exception_ptr 0x0000000100004268 303 __ZSt19uncaught_exceptionsv 0x000000010000426e 304 __ZSt9terminatev 0x0000000100004274 342 __ZdaPv 0x000000010000427a 343 __ZdlPv 0x0000000100004280 344 __Znam 0x0000000100004286 345 __Znwm 0x000000010000428c 347 ____chkstk_darwin 0x0000000100004292 348 ___bzero 0x0000000100004298 349 ___cxa_allocate_exception 0x000000010000429e 350 ___cxa_atexit 0x00000001000042a4 351 ___cxa_begin_catch 0x00000001000042aa 352 ___cxa_end_catch 0x00000001000042b0 353 ___cxa_free_exception 0x00000001000042b6 354 ___cxa_guard_abort 0x00000001000042bc 355 ___cxa_guard_acquire 0x00000001000042c2 356 ___cxa_guard_release 0x00000001000042c8 358 ___cxa_rethrow 0x00000001000042ce 359 ___error 0x00000001000042d4 361 ___maskrune 0x00000001000042da 362 ___stack_chk_fail 0x00000001000042e0 367 ___toupper 0x00000001000042e6 368 ___udivti3 0x00000001000042ec 369 __os_log_impl 0x00000001000042f2 370 __tlv_atexit 0x00000001000042f8 372 _accept 0x00000001000042fe 373 _atoi 0x0000000100004304 374 _backtrace 0x000000010000430a 375 _bind 0x0000000100004310 376 _chdir 0x0000000100004316 377 _chmod 0x000000010000431c 378 _chown 0x0000000100004322 379 _chroot 0x0000000100004328 380 _close 0x000000010000432e 381 _dladdr 0x0000000100004334 382 _dlsym 0x000000010000433a 383 _dup 0x0000000100004340 384 _dup2 0x0000000100004346 385 _exit 0x000000010000434c 386 _fchmod 0x0000000100004352 387 _fchown 0x0000000100004358 388 _fclose 0x000000010000435e 389 _fcntl 0x0000000100004364 390 _fdopen 0x000000010000436a 391 _ferror 0x0000000100004370 392 _fflush 0x0000000100004376 393 _fgetc 0x000000010000437c 394 _fileno 0x0000000100004382 395 _flock 0x0000000100004388 396 _fopen 0x000000010000438e 397 _fork 0x0000000100004394 398 _fprintf 0x000000010000439a 399 _free 0x00000001000043a0 400 _fscanf 0x00000001000043a6 401 _fstat$INODE64 0x00000001000043ac 402 _ftruncate 0x00000001000043b2 403 _fwrite 0x00000001000043b8 404 _getenv 0x00000001000043be 405 _getgrnam_r 0x00000001000043c4 406 _gethostname 0x00000001000043ca 407 _getpeername 0x00000001000043d0 408 _getpid 0x00000001000043d6 409 _getpwnam_r 0x00000001000043dc 410 _gettimeofday 0x00000001000043e2 411 _getuid 0x00000001000043e8 412 _gmtime_r 0x00000001000043ee 413 _if_indextoname 0x00000001000043f4 414 _if_nametoindex 0x00000001000043fa 415 _inet_ntop 0x0000000100004400 416 _inet_pton 0x0000000100004406 417 _ioctl 0x000000010000440c 418 _isatty 0x0000000100004412 430 _kevent 0x0000000100004418 431 _kill 0x000000010000441e 432 _kqueue 0x0000000100004424 433 _listen 0x000000010000442a 434 _localtime_r 0x0000000100004430 435 _malloc 0x0000000100004436 436 _memchr 0x000000010000443c 437 _memcmp 0x0000000100004442 438 _memcpy 0x0000000100004448 439 _memmove 0x000000010000444e 440 _memset 0x0000000100004454 441 _mkdir 0x000000010000445a 442 _nanosleep 0x0000000100004460 443 _open 0x0000000100004466 444 _os_log_create 0x000000010000446c 445 _os_log_type_enabled 0x0000000100004472 446 _os_release 0x0000000100004478 447 _pause 0x000000010000447e 448 _pipe 0x0000000100004484 449 _pthread_cond_broadcast 0x000000010000448a 450 _pthread_cond_destroy 0x0000000100004490 451 _pthread_cond_init 0x0000000100004496 452 _pthread_cond_signal 0x000000010000449c 453 _pthread_cond_wait 0x00000001000044a2 454 _pthread_create 0x00000001000044a8 455 _pthread_detach 0x00000001000044ae 456 _pthread_join 0x00000001000044b4 457 _pthread_mutex_destroy 0x00000001000044ba 458 _pthread_mutex_init 0x00000001000044c0 459 _pthread_mutex_lock 0x00000001000044c6 460 _pthread_mutex_unlock 0x00000001000044cc 461 _pthread_sigmask 0x00000001000044d2 462 _pthread_threadid_np 0x00000001000044d8 463 _rand 0x00000001000044de 464 _read 0x00000001000044e4 465 _realloc 0x00000001000044ea 466 _recv 0x00000001000044f0 467 _recvfrom 0x00000001000044f6 468 _rewind 0x00000001000044fc 469 _sendmsg 0x0000000100004502 470 _setgid 0x0000000100004508 471 _setgroups 0x000000010000450e 472 _setpgid 0x0000000100004514 473 _setsid 0x000000010000451a 474 _setsockopt 0x0000000100004520 475 _setuid 0x0000000100004526 476 _shutdown 0x000000010000452c 477 _sigaction 0x0000000100004532 478 _signal 0x0000000100004538 479 _sigprocmask 0x000000010000453e 480 _snprintf 0x0000000100004544 481 _socket 0x000000010000454a 482 _srand 0x0000000100004550 483 _stat$INODE64 0x0000000100004556 484 _strcat 0x000000010000455c 485 _strchr 0x0000000100004562 486 _strerror_r 0x0000000100004568 487 _strftime 0x000000010000456e 488 _strlen 0x0000000100004574 489 _strrchr 0x000000010000457a 490 _strstr 0x0000000100004580 491 _strtold 0x0000000100004586 492 _strtoll 0x000000010000458c 493 _strtoul 0x0000000100004592 495 _sysconf 0x0000000100004598 496 _sysctl 0x000000010000459e 497 _time 0x00000001000045a4 498 _umask 0x00000001000045aa 499 _waitpid 0x00000001000045b0 500 _write 0x00000001000045b6 501 _xmlAddChild 0x00000001000045bc 502 _xmlCleanupParser 0x00000001000045c2 503 _xmlCreatePushParserCtxt 0x00000001000045c8 504 _xmlDocCopyNode 0x00000001000045ce 505 _xmlDocDumpFormatMemoryEnc 0x00000001000045d4 506 _xmlDocGetRootElement 0x00000001000045da 507 _xmlDocSetRootElement 0x00000001000045e0 508 _xmlEncodeSpecialChars 0x00000001000045e6 510 _xmlFreeDoc 0x00000001000045ec 511 _xmlFreeNode 0x00000001000045f2 512 _xmlFreeParserCtxt 0x00000001000045f8 513 _xmlGetLastError 0x00000001000045fe 514 _xmlInitParser 0x0000000100004604 515 _xmlNewChild 0x000000010000460a 516 _xmlNewDoc 0x0000000100004610 517 _xmlNewNode 0x0000000100004616 518 _xmlNewNs 0x000000010000461c 519 _xmlNewNsProp 0x0000000100004622 520 _xmlNewTextChild 0x0000000100004628 521 _xmlNodeGetContent 0x000000010000462e 522 _xmlNodeSetContent 0x0000000100004634 523 _xmlParseChunk 0x000000010000463a 524 _xmlParseMemory 0x0000000100004640 525 _xmlReconciliateNs 0x0000000100004646 526 _xmlResetLastError 0x000000010000464c 527 _xmlSearchNs 0x0000000100004652 528 _xmlSetGenericErrorFunc 0x0000000100004658 529 _xmlSetNs 0x000000010000465e 530 _xmlSetStructuredErrorFunc 0x0000000100004664 531 _xmlStrdup 0x000000010000466a 532 _xmlThrDefSetGenericErrorFunc 0x0000000100004670 533 _xmlThrDefSetStructuredErrorFunc 0x0000000100004676 534 _xmlXPathEval 0x000000010000467c 535 _xmlXPathFreeContext 0x0000000100004682 536 _xmlXPathFreeObject 0x0000000100004688 537 _xmlXPathNewContext 0x000000010000468e 538 _xmlXPathRegisterNs 0x0000000100004694 539 _xmlXPathSetContextNode Indirect symbols for (__DATA_CONST,__got) 100 entries address index name 0x00000001000dc000 182 __DefaultRuneLocale 0x00000001000dc008 1 __ZGVN4asio6detail10call_stackINS0_14strand_service11strand_implEhE4top_E 0x00000001000dc010 2 __ZGVN4asio6detail10call_stackINS0_14thread_contextENS0_16thread_info_baseEE4top_E 0x00000001000dc018 3 __ZGVN4asio6detail10call_stackINS0_23strand_executor_service11strand_implEhE4top_E 0x00000001000dc020 4 __ZGVN4asio6detail12service_baseINS0_14strand_serviceEE2idE 0x00000001000dc028 5 __ZGVN4asio6detail17posix_global_implINS_14system_contextEE9instance_E 0x00000001000dc030 6 __ZGVN4asio6detail30execution_context_service_baseINS0_14kqueue_reactorEE2idE 0x00000001000dc038 7 __ZGVN4asio6detail30execution_context_service_baseINS0_18signal_set_serviceEE2idE 0x00000001000dc040 8 __ZGVN4asio6detail30execution_context_service_baseINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt3__16chrono12steady_clockENS_11wait_traitsIS6_EEEEEEE2idE 0x00000001000dc048 9 __ZGVN4asio6detail30execution_context_service_baseINS0_23reactive_socket_serviceINS_2ip3tcpEEEE2idE 0x00000001000dc050 10 __ZGVN4asio6detail30execution_context_service_baseINS0_23reactive_socket_serviceINS_2ip3udpEEEE2idE 0x00000001000dc058 11 __ZGVN4asio6detail30execution_context_service_baseINS0_23reactive_socket_serviceINS_7generic12raw_protocolEEEE2idE 0x00000001000dc060 12 __ZGVN4asio6detail30execution_context_service_baseINS0_27reactive_descriptor_serviceEE2idE 0x00000001000dc068 13 __ZGVN4asio6detail30execution_context_service_baseINS0_9schedulerEE2idE 0x00000001000dc070 14 __ZGVZN4asio15system_categoryEvE8instance 0x00000001000dc078 15 __ZGVZN4asio5error17get_misc_categoryEvE8instance 0x00000001000dc080 16 __ZGVZN4asio5error18get_netdb_categoryEvE8instance 0x00000001000dc088 17 __ZGVZN4asio5error21get_addrinfo_categoryEvE8instance 0x00000001000dc090 18 __ZN14asio_prefer_fn15static_instanceINS_4implEE8instanceE 0x00000001000dc098 20 __ZN4asio6detail16service_registry6createINS0_14kqueue_reactorENS_17execution_contextEEEPNS4_7serviceEPv 0x00000001000dc0a0 21 __ZN4asio6detail16service_registry6createINS0_9schedulerENS_17execution_contextEEEPNS4_7serviceEPv 0x00000001000dc0a8 22 __ZN4asio6detail17posix_global_implINS_14system_contextEE11static_ptr_E 0x00000001000dc0b0 23 __ZN4asio6detail17posix_global_implINS_14system_contextEE9instance_E 0x00000001000dc0b8 24 __ZN4asio9execution6detail18outstanding_work_tILi0EE7trackedE 0x00000001000dc0c0 206 __ZNSt11logic_errorD1Ev 0x00000001000dc0c8 208 __ZNSt12length_errorD1Ev 0x00000001000dc0d0 209 __ZNSt12out_of_rangeD1Ev 0x00000001000dc0d8 218 __ZNSt13runtime_errorD1Ev 0x00000001000dc0e0 220 __ZNSt19bad_optional_accessD1Ev 0x00000001000dc0e8 222 __ZNSt20bad_array_new_lengthD1Ev 0x00000001000dc0f0 235 __ZNSt3__112system_errorD1Ev 0x00000001000dc0f8 246 __ZNSt3__113random_deviceD1Ev 0x00000001000dc100 275 __ZNSt3__15mutexD1Ev 0x00000001000dc108 290 __ZNSt3__18numpunctIcE2idE 0x00000001000dc110 299 __ZNSt9bad_allocD1Ev 0x00000001000dc118 LOCAL 0x00000001000dc120 LOCAL 0x00000001000dc128 25 __ZTIN4asio10io_context19basic_executor_typeINSt3__19allocatorIvEELm0EEE 0x00000001000dc130 26 __ZTIN4asio10io_context19basic_executor_typeINSt3__19allocatorIvEELm4EEE 0x00000001000dc138 28 __ZTIN4asio19multiple_exceptionsE 0x00000001000dc140 29 __ZTIN4asio21invalid_service_ownerE 0x00000001000dc148 30 __ZTIN4asio22service_already_existsE 0x00000001000dc150 31 __ZTIN4asio2ip16bad_address_castE 0x00000001000dc158 42 __ZTIN4asio6detail14typeid_wrapperINS0_14kqueue_reactorEEE 0x00000001000dc160 43 __ZTIN4asio6detail14typeid_wrapperINS0_18signal_set_serviceEEE 0x00000001000dc168 44 __ZTIN4asio6detail14typeid_wrapperINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt3__16chrono12steady_clockENS_11wait_traitsIS6_EEEEEEEE 0x00000001000dc170 45 __ZTIN4asio6detail14typeid_wrapperINS0_23reactive_socket_serviceINS_2ip3tcpEEEEE 0x00000001000dc178 46 __ZTIN4asio6detail14typeid_wrapperINS0_23reactive_socket_serviceINS_2ip3udpEEEEE 0x00000001000dc180 47 __ZTIN4asio6detail14typeid_wrapperINS0_23reactive_socket_serviceINS_7generic12raw_protocolEEEEE 0x00000001000dc188 48 __ZTIN4asio6detail14typeid_wrapperINS0_27reactive_descriptor_serviceEEE 0x00000001000dc190 49 __ZTIN4asio6detail14typeid_wrapperINS0_9schedulerEEE 0x00000001000dc198 74 __ZTIN4asio9execution12bad_executorE 0x00000001000dc1a0 LOCAL 0x00000001000dc1a8 LOCAL 0x00000001000dc1b0 LOCAL 0x00000001000dc1b8 305 __ZTINSt3__112system_errorE 0x00000001000dc1c0 79 __ZTINSt3__117bad_function_callE 0x00000001000dc1c8 313 __ZTISt11logic_error 0x00000001000dc1d0 314 __ZTISt12length_error 0x00000001000dc1d8 315 __ZTISt12out_of_range 0x00000001000dc1e0 316 __ZTISt13runtime_error 0x00000001000dc1e8 317 __ZTISt18bad_variant_access 0x00000001000dc1f0 318 __ZTISt19bad_optional_access 0x00000001000dc1f8 319 __ZTISt20bad_array_new_length 0x00000001000dc200 321 __ZTISt9bad_alloc 0x00000001000dc208 322 __ZTISt9exception 0x00000001000dc210 323 __ZTIv 0x00000001000dc218 83 __ZTSN4asio10io_context19basic_executor_typeINSt3__19allocatorIvEELm0EEE 0x00000001000dc220 84 __ZTSN4asio10io_context19basic_executor_typeINSt3__19allocatorIvEELm4EEE 0x00000001000dc228 107 __ZTSN4asio6detail14typeid_wrapperINS0_9schedulerEEE 0x00000001000dc230 329 __ZTVNSt3__112system_errorE 0x00000001000dc238 330 __ZTVSt12length_error 0x00000001000dc240 331 __ZTVSt12out_of_range 0x00000001000dc248 332 __ZTVSt18bad_variant_access 0x00000001000dc250 333 __ZTVSt19bad_optional_access 0x00000001000dc258 141 __ZZN4asio15system_categoryEvE8instance 0x00000001000dc260 142 __ZZN4asio5error17get_misc_categoryEvE8instance 0x00000001000dc268 143 __ZZN4asio5error18get_netdb_categoryEvE8instance 0x00000001000dc270 144 __ZZN4asio5error21get_addrinfo_categoryEvE8instance 0x00000001000dc278 145 __ZZN4asio6detail16get_signal_stateEvE5state 0x00000001000dc280 360 ___gxx_personality_v0 0x00000001000dc288 363 ___stack_chk_guard 0x00000001000dc290 364 ___stderrp 0x00000001000dc298 365 ___stdinp 0x00000001000dc2a0 366 ___stdoutp 0x00000001000dc2a8 147 _asio_detail_posix_thread_function 0x00000001000dc2b0 419 _kODAttributeTypeAllAttributes 0x00000001000dc2b8 420 _kODAttributeTypeFullName 0x00000001000dc2c0 421 _kODAttributeTypeNFSHomeDirectory 0x00000001000dc2c8 422 _kODAttributeTypePassword 0x00000001000dc2d0 423 _kODAttributeTypePrimaryGroupID 0x00000001000dc2d8 424 _kODAttributeTypeUniqueID 0x00000001000dc2e0 425 _kODAttributeTypeUserShell 0x00000001000dc2e8 426 _kODErrorDomainFramework 0x00000001000dc2f0 427 _kODRecordTypeGroups 0x00000001000dc2f8 428 _kODRecordTypeUsers 0x00000001000dc300 429 _kODSessionDefault 0x00000001000dc308 494 _sys_signame 0x00000001000dc310 509 _xmlFree 0x00000001000dc318 540 dyld_stub_binder Indirect symbols for (__DATA,__la_symbol_ptr) 303 entries address index name 0x00000001000e4000 148 _CFAllocatorAllocate 0x00000001000e4008 149 _CFAllocatorDeallocate 0x00000001000e4010 150 _CFArrayCreate 0x00000001000e4018 151 _CFArrayGetCount 0x00000001000e4020 152 _CFArrayGetValueAtIndex 0x00000001000e4028 153 _CFDictionaryCreate 0x00000001000e4030 154 _CFDictionaryGetTypeID 0x00000001000e4038 155 _CFDictionaryGetValue 0x00000001000e4040 157 _CFErrorCopyDescription 0x00000001000e4048 158 _CFErrorGetCode 0x00000001000e4050 159 _CFErrorGetDomain 0x00000001000e4058 160 _CFGetTypeID 0x00000001000e4060 162 _CFRelease 0x00000001000e4068 163 _CFRetain 0x00000001000e4070 164 _CFStringCompare 0x00000001000e4078 165 _CFStringCreateWithCharacters 0x00000001000e4080 166 _CFStringCreateWithCharactersNoCopy 0x00000001000e4088 167 _CFStringGetCStringPtr 0x00000001000e4090 168 _CFStringGetCharacters 0x00000001000e4098 169 _CFStringGetCharactersPtr 0x00000001000e40a0 170 _CFStringGetLength 0x00000001000e40a8 171 _CFStringGetTypeID 0x00000001000e40b0 172 _ODNodeCopyRecord 0x00000001000e40b8 173 _ODNodeCreateRecord 0x00000001000e40c0 174 _ODNodeCreateWithNodeType 0x00000001000e40c8 175 _ODQueryCopyResults 0x00000001000e40d0 176 _ODQueryCreateWithNode 0x00000001000e40d8 177 _ODRecordCopyValues 0x00000001000e40e0 178 _ODRecordSetValue 0x00000001000e40e8 179 _ODRecordSynchronize 0x00000001000e40f0 180 _SCDynamicStoreCopyValue 0x00000001000e40f8 181 _SCDynamicStoreCreate 0x00000001000e4100 183 __Unwind_Resume 0x00000001000e4108 186 __ZNKSt3__110error_code7messageEv 0x00000001000e4110 191 __ZNKSt3__14__fs10filesystem4path10__filenameEv 0x00000001000e4118 192 __ZNKSt3__14__fs10filesystem4path11__root_nameEv 0x00000001000e4120 193 __ZNKSt3__14__fs10filesystem4path13__parent_pathEv 0x00000001000e4128 194 __ZNKSt3__14__fs10filesystem4path16__root_directoryEv 0x00000001000e4130 195 __ZNKSt3__14__fs10filesystem4path3endEv 0x00000001000e4138 196 __ZNKSt3__14__fs10filesystem4path5beginEv 0x00000001000e4140 197 __ZNKSt3__14__fs10filesystem4path9__compareENS_17basic_string_viewIcNS_11char_traitsIcEEEE 0x00000001000e4148 198 __ZNKSt3__16locale9has_facetERNS0_2idE 0x00000001000e4150 199 __ZNKSt3__16locale9use_facetERNS0_2idE 0x00000001000e4158 200 __ZNKSt3__18ios_base6getlocEv 0x00000001000e4160 202 __ZNSt11logic_errorC1EPKc 0x00000001000e4168 203 __ZNSt11logic_errorC1ERKS_ 0x00000001000e4170 204 __ZNSt11logic_errorC2EPKc 0x00000001000e4178 205 __ZNSt11logic_errorC2ERKS_ 0x00000001000e4180 206 __ZNSt11logic_errorD1Ev 0x00000001000e4188 207 __ZNSt11logic_errorD2Ev 0x00000001000e4190 209 __ZNSt12out_of_rangeD1Ev 0x00000001000e4198 210 __ZNSt13exception_ptrC1ERKS_ 0x00000001000e41a0 211 __ZNSt13exception_ptrD1Ev 0x00000001000e41a8 212 __ZNSt13exception_ptraSERKS_ 0x00000001000e41b0 213 __ZNSt13runtime_errorC1EPKc 0x00000001000e41b8 214 __ZNSt13runtime_errorC1ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE 0x00000001000e41c0 215 __ZNSt13runtime_errorC2EPKc 0x00000001000e41c8 216 __ZNSt13runtime_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE 0x00000001000e41d0 217 __ZNSt13runtime_errorC2ERKS_ 0x00000001000e41d8 219 __ZNSt13runtime_errorD2Ev 0x00000001000e41e0 221 __ZNSt20bad_array_new_lengthC1Ev 0x00000001000e41e8 223 __ZNSt3__112__next_primeEm 0x00000001000e41f0 224 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc 0x00000001000e41f8 225 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcm 0x00000001000e4200 226 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEmc 0x00000001000e4208 227 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEmc 0x00000001000e4210 228 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc 0x00000001000e4218 229 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_ 0x00000001000e4220 230 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev 0x00000001000e4228 231 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_ 0x00000001000e4230 232 __ZNSt3__112system_errorC1ENS_10error_codeE 0x00000001000e4238 233 __ZNSt3__112system_errorC1ENS_10error_codeEPKc 0x00000001000e4240 234 __ZNSt3__112system_errorC1ENS_10error_codeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE 0x00000001000e4248 235 __ZNSt3__112system_errorD1Ev 0x00000001000e4250 238 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERd 0x00000001000e4258 239 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5writeEPKcl 0x00000001000e4260 242 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED2Ev 0x00000001000e4268 243 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEx 0x00000001000e4270 244 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy 0x00000001000e4278 245 __ZNSt3__113random_deviceC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE 0x00000001000e4280 247 __ZNSt3__113random_deviceclEv 0x00000001000e4288 250 __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev 0x00000001000e4290 251 __ZNSt3__114error_categoryD2Ev 0x00000001000e4298 259 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev 0x00000001000e42a0 260 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev 0x00000001000e42a8 261 __ZNSt3__115recursive_mutexC1Ev 0x00000001000e42b0 262 __ZNSt3__115recursive_mutexD1Ev 0x00000001000e42b8 263 __ZNSt3__115system_categoryEv 0x00000001000e42c0 264 __ZNSt3__116generic_categoryEv 0x00000001000e42c8 265 __ZNSt3__118condition_variable10notify_oneEv 0x00000001000e42d0 266 __ZNSt3__118condition_variableD1Ev 0x00000001000e42d8 267 __ZNSt3__119__shared_weak_count14__release_weakEv 0x00000001000e42e0 268 __ZNSt3__119__shared_weak_countD2Ev 0x00000001000e42e8 269 __ZNSt3__14__fs10filesystem10__absoluteERKNS1_4pathEPNS_10error_codeE 0x00000001000e42f0 270 __ZNSt3__14__fs10filesystem4path8iterator11__incrementEv 0x00000001000e42f8 271 __ZNSt3__14__fs10filesystem8__removeERKNS1_4pathEPNS_10error_codeE 0x00000001000e4300 272 __ZNSt3__14__fs10filesystem8__statusERKNS1_4pathEPNS_10error_codeE 0x00000001000e4308 273 __ZNSt3__15mutex4lockEv 0x00000001000e4310 274 __ZNSt3__15mutex6unlockEv 0x00000001000e4318 275 __ZNSt3__15mutexD1Ev 0x00000001000e4320 276 __ZNSt3__16chrono12steady_clock3nowEv 0x00000001000e4328 277 __ZNSt3__16chrono12system_clock3nowEv 0x00000001000e4330 278 __ZNSt3__16chrono12system_clock9to_time_tERKNS0_10time_pointIS1_NS0_8durationIxNS_5ratioILl1ELl1000000EEEEEEE 0x00000001000e4338 280 __ZNSt3__16locale5facetD2Ev 0x00000001000e4340 281 __ZNSt3__16locale7classicEv 0x00000001000e4348 282 __ZNSt3__16localeC1ERKS0_ 0x00000001000e4350 283 __ZNSt3__16localeC1Ev 0x00000001000e4358 284 __ZNSt3__16localeD1Ev 0x00000001000e4360 285 __ZNSt3__16localeaSERKS0_ 0x00000001000e4368 286 __ZNSt3__16thread4joinEv 0x00000001000e4370 287 __ZNSt3__16threadD1Ev 0x00000001000e4378 288 __ZNSt3__18ios_base4initEPv 0x00000001000e4380 289 __ZNSt3__18ios_base5imbueERKNS_6localeE 0x00000001000e4388 291 __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev 0x00000001000e4390 292 __ZNSt3__19to_stringEi 0x00000001000e4398 293 __ZNSt3__19to_stringEj 0x00000001000e43a0 294 __ZNSt3__19to_stringEm 0x00000001000e43a8 295 __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_ 0x00000001000e43b0 296 __ZNSt8bad_castC2Ev 0x00000001000e43b8 297 __ZNSt8bad_castD2Ev 0x00000001000e43c0 298 __ZNSt9bad_allocC1Ev 0x00000001000e43c8 300 __ZNSt9exceptionD2Ev 0x00000001000e43d0 301 __ZSt17current_exceptionv 0x00000001000e43d8 302 __ZSt17rethrow_exceptionSt13exception_ptr 0x00000001000e43e0 303 __ZSt19uncaught_exceptionsv 0x00000001000e43e8 304 __ZSt9terminatev 0x00000001000e43f0 342 __ZdaPv 0x00000001000e43f8 343 __ZdlPv 0x00000001000e4400 344 __Znam 0x00000001000e4408 345 __Znwm 0x00000001000e4410 347 ____chkstk_darwin 0x00000001000e4418 348 ___bzero 0x00000001000e4420 349 ___cxa_allocate_exception 0x00000001000e4428 350 ___cxa_atexit 0x00000001000e4430 351 ___cxa_begin_catch 0x00000001000e4438 352 ___cxa_end_catch 0x00000001000e4440 353 ___cxa_free_exception 0x00000001000e4448 354 ___cxa_guard_abort 0x00000001000e4450 355 ___cxa_guard_acquire 0x00000001000e4458 356 ___cxa_guard_release 0x00000001000e4460 358 ___cxa_rethrow 0x00000001000e4468 359 ___error 0x00000001000e4470 361 ___maskrune 0x00000001000e4478 362 ___stack_chk_fail 0x00000001000e4480 367 ___toupper 0x00000001000e4488 368 ___udivti3 0x00000001000e4490 369 __os_log_impl 0x00000001000e4498 370 __tlv_atexit 0x00000001000e44a0 372 _accept 0x00000001000e44a8 373 _atoi 0x00000001000e44b0 374 _backtrace 0x00000001000e44b8 375 _bind 0x00000001000e44c0 376 _chdir 0x00000001000e44c8 377 _chmod 0x00000001000e44d0 378 _chown 0x00000001000e44d8 379 _chroot 0x00000001000e44e0 380 _close 0x00000001000e44e8 381 _dladdr 0x00000001000e44f0 382 _dlsym 0x00000001000e44f8 383 _dup 0x00000001000e4500 384 _dup2 0x00000001000e4508 385 _exit 0x00000001000e4510 386 _fchmod 0x00000001000e4518 387 _fchown 0x00000001000e4520 388 _fclose 0x00000001000e4528 389 _fcntl 0x00000001000e4530 390 _fdopen 0x00000001000e4538 391 _ferror 0x00000001000e4540 392 _fflush 0x00000001000e4548 393 _fgetc 0x00000001000e4550 394 _fileno 0x00000001000e4558 395 _flock 0x00000001000e4560 396 _fopen 0x00000001000e4568 397 _fork 0x00000001000e4570 398 _fprintf 0x00000001000e4578 399 _free 0x00000001000e4580 400 _fscanf 0x00000001000e4588 401 _fstat$INODE64 0x00000001000e4590 402 _ftruncate 0x00000001000e4598 403 _fwrite 0x00000001000e45a0 404 _getenv 0x00000001000e45a8 405 _getgrnam_r 0x00000001000e45b0 406 _gethostname 0x00000001000e45b8 407 _getpeername 0x00000001000e45c0 408 _getpid 0x00000001000e45c8 409 _getpwnam_r 0x00000001000e45d0 410 _gettimeofday 0x00000001000e45d8 411 _getuid 0x00000001000e45e0 412 _gmtime_r 0x00000001000e45e8 413 _if_indextoname 0x00000001000e45f0 414 _if_nametoindex 0x00000001000e45f8 415 _inet_ntop 0x00000001000e4600 416 _inet_pton 0x00000001000e4608 417 _ioctl 0x00000001000e4610 418 _isatty 0x00000001000e4618 430 _kevent 0x00000001000e4620 431 _kill 0x00000001000e4628 432 _kqueue 0x00000001000e4630 433 _listen 0x00000001000e4638 434 _localtime_r 0x00000001000e4640 435 _malloc 0x00000001000e4648 436 _memchr 0x00000001000e4650 437 _memcmp 0x00000001000e4658 438 _memcpy 0x00000001000e4660 439 _memmove 0x00000001000e4668 440 _memset 0x00000001000e4670 441 _mkdir 0x00000001000e4678 442 _nanosleep 0x00000001000e4680 443 _open 0x00000001000e4688 444 _os_log_create 0x00000001000e4690 445 _os_log_type_enabled 0x00000001000e4698 446 _os_release 0x00000001000e46a0 447 _pause 0x00000001000e46a8 448 _pipe 0x00000001000e46b0 449 _pthread_cond_broadcast 0x00000001000e46b8 450 _pthread_cond_destroy 0x00000001000e46c0 451 _pthread_cond_init 0x00000001000e46c8 452 _pthread_cond_signal 0x00000001000e46d0 453 _pthread_cond_wait 0x00000001000e46d8 454 _pthread_create 0x00000001000e46e0 455 _pthread_detach 0x00000001000e46e8 456 _pthread_join 0x00000001000e46f0 457 _pthread_mutex_destroy 0x00000001000e46f8 458 _pthread_mutex_init 0x00000001000e4700 459 _pthread_mutex_lock 0x00000001000e4708 460 _pthread_mutex_unlock 0x00000001000e4710 461 _pthread_sigmask 0x00000001000e4718 462 _pthread_threadid_np 0x00000001000e4720 463 _rand 0x00000001000e4728 464 _read 0x00000001000e4730 465 _realloc 0x00000001000e4738 466 _recv 0x00000001000e4740 467 _recvfrom 0x00000001000e4748 468 _rewind 0x00000001000e4750 469 _sendmsg 0x00000001000e4758 470 _setgid 0x00000001000e4760 471 _setgroups 0x00000001000e4768 472 _setpgid 0x00000001000e4770 473 _setsid 0x00000001000e4778 474 _setsockopt 0x00000001000e4780 475 _setuid 0x00000001000e4788 476 _shutdown 0x00000001000e4790 477 _sigaction 0x00000001000e4798 478 _signal 0x00000001000e47a0 479 _sigprocmask 0x00000001000e47a8 480 _snprintf 0x00000001000e47b0 481 _socket 0x00000001000e47b8 482 _srand 0x00000001000e47c0 483 _stat$INODE64 0x00000001000e47c8 484 _strcat 0x00000001000e47d0 485 _strchr 0x00000001000e47d8 486 _strerror_r 0x00000001000e47e0 487 _strftime 0x00000001000e47e8 488 _strlen 0x00000001000e47f0 489 _strrchr 0x00000001000e47f8 490 _strstr 0x00000001000e4800 491 _strtold 0x00000001000e4808 492 _strtoll 0x00000001000e4810 493 _strtoul 0x00000001000e4818 495 _sysconf 0x00000001000e4820 496 _sysctl 0x00000001000e4828 497 _time 0x00000001000e4830 498 _umask 0x00000001000e4838 499 _waitpid 0x00000001000e4840 500 _write 0x00000001000e4848 501 _xmlAddChild 0x00000001000e4850 502 _xmlCleanupParser 0x00000001000e4858 503 _xmlCreatePushParserCtxt 0x00000001000e4860 504 _xmlDocCopyNode 0x00000001000e4868 505 _xmlDocDumpFormatMemoryEnc 0x00000001000e4870 506 _xmlDocGetRootElement 0x00000001000e4878 507 _xmlDocSetRootElement 0x00000001000e4880 508 _xmlEncodeSpecialChars 0x00000001000e4888 510 _xmlFreeDoc 0x00000001000e4890 511 _xmlFreeNode 0x00000001000e4898 512 _xmlFreeParserCtxt 0x00000001000e48a0 513 _xmlGetLastError 0x00000001000e48a8 514 _xmlInitParser 0x00000001000e48b0 515 _xmlNewChild 0x00000001000e48b8 516 _xmlNewDoc 0x00000001000e48c0 517 _xmlNewNode 0x00000001000e48c8 518 _xmlNewNs 0x00000001000e48d0 519 _xmlNewNsProp 0x00000001000e48d8 520 _xmlNewTextChild 0x00000001000e48e0 521 _xmlNodeGetContent 0x00000001000e48e8 522 _xmlNodeSetContent 0x00000001000e48f0 523 _xmlParseChunk 0x00000001000e48f8 524 _xmlParseMemory 0x00000001000e4900 525 _xmlReconciliateNs 0x00000001000e4908 526 _xmlResetLastError 0x00000001000e4910 527 _xmlSearchNs 0x00000001000e4918 528 _xmlSetGenericErrorFunc 0x00000001000e4920 529 _xmlSetNs 0x00000001000e4928 530 _xmlSetStructuredErrorFunc 0x00000001000e4930 531 _xmlStrdup 0x00000001000e4938 532 _xmlThrDefSetGenericErrorFunc 0x00000001000e4940 533 _xmlThrDefSetStructuredErrorFunc 0x00000001000e4948 534 _xmlXPathEval 0x00000001000e4950 535 _xmlXPathFreeContext 0x00000001000e4958 536 _xmlXPathFreeObject 0x00000001000e4960 537 _xmlXPathNewContext 0x00000001000e4968 538 _xmlXPathRegisterNs 0x00000001000e4970 539 _xmlXPathSetContextNode Indirect symbols for (__DATA,__thread_ptrs) 1 entries address index name 0x00000001000e4e30 19 __ZN4asio6detail15keyword_tss_ptrINS0_10call_stackINS0_14thread_contextENS0_16thread_info_baseEE7contextEE6value_E (__TEXT,__info_plist) section CFBundleIdentifier io.github.gershnik.wsddn CFBundleName wsddn CFBundleDisplayName WS-Discovery Host Daemon CFBundleVersion 1.14 CFBundleShortVersionString 1.14 NSHumanReadableCopyright Copyright (c) 2022, Eugene Gershnik CFBundleInfoDictionaryVersion 6.0 ```

That said, I'm not surprised in the least. Of the 650+ packages (formulae & casks) I've got installed via Homebrew, I haven't been able to compile around 20-30 of them. Roughly speaking, therefore, 95% of the packages will compile, but there is a 1 in 20 chance that it won't compile, at least not automatically, therefore, it's time to try to compile wsdd-native manually!

I have Homebrew's Clang set by default:

Homebrew clang version 18.1.7
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

which CMake (3.29.6, also from Homebrew) correctly identifies:

-- The C compiler identification is Clang 18.1.7
-- The CXX compiler identification is Clang 18.1.7

(but I have more compiler options, as I'll describe further below)

The first question I have is — why the need to use libuuid-populate which gets pulled & compiled from util-linux? macOS, via Homebrew, perfectly supports the OSSP uuid library (brew install ossp-uuid), just like anything based on Debian (apt install uuid). I'm just asking because it's clear from the logs that the compiler grumbles a bit about it (but fortunately does not throw an error). Anyway, here is what happens with a Clang compilation:

cmake --build out (Homebrew Clang 18.1.7)
```make [ 1%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.o In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/src/format.cc:8: In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format-inl.h:18: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/locale:202: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__locale:23: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string:625: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string_view:213: /usr/local/opt/llvm/bin/../include/c++/v1/__fwd/string_view.h:22:41: warning: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 19, so please migrate off of it. [-Wdeprecated-declarations] 22 | template > | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:361:26: note: in instantiation of default argument for 'basic_string_view' required here 361 | template using std_string_view = std::basic_string_view; | ^~~~~ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:452:50: note: in instantiation of template type alias 'std_string_view' requested here 452 | S, detail::std_string_view>::value)> | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format.h:737:57: note: in instantiation of template class 'fmt::basic_string_view' requested here 737 | inline auto compute_width(basic_string_view s) -> size_t { | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__string/char_traits.h:81:8: note: 'char_traits' has been explicitly marked deprecated here 81 | struct _LIBCPP_DEPRECATED_( | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__config:975:53: note: expanded from macro '_LIBCPP_DEPRECATED_' 975 | # define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) | ^ 1 warning generated. ``` (repeated several times, wherever `string_view` is called)

and finally:

Errors during the linking phase
```make [...] [ 94%] Linking CXX executable wsddn undef: __ZTVNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE undef: __ZTVNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE undef: __ZTVNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEEE undef: __ZTTNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE undef: ___cxa_init_primary_exception undef: __ZTTNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE undef: __ZNSt13exception_ptr31__from_native_exception_pointerEPv Undefined symbols for architecture x86_64: "vtable for std::__1::basic_ostringstream, std::__1::allocator >", referenced from: void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&) in lto.o void toml::v3::impl::error_builder::append(int const&) in lto.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for std::__1::basic_stringstream, std::__1::allocator >", referenced from: toml::v3::impl::impl_ex::parser::parse_float() in lto.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for std::__1::basic_stringbuf, std::__1::allocator >", referenced from: toml::v3::impl::impl_ex::parser::parse_float() in lto.o void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&) in lto.o std::__1::basic_stringstream, std::__1::allocator >::~basic_stringstream() in lto.o void toml::v3::impl::error_builder::append(int const&) in lto.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "VTT for std::__1::basic_ostringstream, std::__1::allocator >", referenced from: void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&) in lto.o void toml::v3::impl::error_builder::append(int const&) in lto.o "___cxa_init_primary_exception", referenced from: asio::detail::thread_info_base::capture_current_exception() in lto.o "VTT for std::__1::basic_stringstream, std::__1::allocator >", referenced from: toml::v3::impl::impl_ex::parser::parse_float() in lto.o std::__1::basic_stringstream, std::__1::allocator >::~basic_stringstream() in lto.o "std::exception_ptr::__from_native_exception_pointer(void*)", referenced from: asio::detail::thread_info_base::capture_current_exception() in lto.o ld: symbol(s) not found for architecture x86_64 clang++: error: linker command failed with exit code 1 (use -v to see invocation) gmake[2]: *** [CMakeFiles/wsddn.dir/build.make:428: wsddn] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:234: CMakeFiles/wsddn.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2 ```

Ok, not good. The compilation step works well — no errors, just annoying warnings — but linking fails, and the reasons for the falure are too obscure for me. I can't even figure out which file(s) failed to generate any symbols (lto.c?). I can say that line 428 of CMakeFiles/wsddn.dir/build.make is roughly the following:

426 wsddn: CMakeFiles/wsddn.dir/link.txt
427         @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/Users/gwyneth/Developer/wsdd-native/out/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Linking CXX executable wsddn"
428         $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/wsddn.dir/link.txt --verbose=$(VERBOSE)
429         dsymutil /Users/gwyneth/Developer/wsdd-native/out/wsddn -o /Users/gwyneth/Developer/wsdd-native/out/wsddn.dSYM
430         codesign --force --sign - --timestamp=none --options runtime /Users/gwyneth/Developer/wsdd-native/out/wsddn
431

while line 234 on CMakeFiles/Makefile2 is:

232 CMakeFiles/wsddn.dir/all: _deps/spdlog-build/CMakeFiles/spdlog.dir/all
233         $(MAKE) $(MAKESILENT) -f CMakeFiles/wsddn.dir/build.make CMakeFiles/wsddn.dir/depend
234         $(MAKE) $(MAKESILENT) -f CMakeFiles/wsddn.dir/build.make CMakeFiles/wsddn.dir/build
235         @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/Users/gwyneth/Developer/wsdd-native/CMakeFiles --progress-num=33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52 "Built target wsddn"
236 .PHONY : CMakeFiles/wsddn.dir/all
237

I'd be more than glad to provide you with additional information, if you need.

Oh well. When Clang fails a compilation... it's time to switch to GCC!

For good measure, I'm also exporting the CC and CXX flags, although cmake should handle that properly...

$ export CC=/usr/local/bin/gcc-14
$ export CXX=/usr/local/bin/g++-14
$ cmake -S . -B out -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFETCHCONTENT_QUIET=OFF .. -DCMAKE_C_COMPILER=/usr/local/bin/gcc-14 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-14

Unfortunately, it seems that GCC is including files from the MacOSX12.1.sdk, but I'm stuck with 11.7.9:

Logs of building with the 'wrong' SDK...
```make [...] [ 21%] Building CXX object _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/Availability.h:136, from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/_types/_fd_def.h:32, from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/types.h:184, from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/config.h:17, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/utf_encoding.h:33, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/mappings.h:11, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/src/unicode_mappings.cpp:11: /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:126:70: error: attributes are not allowed on a function-definition 126 | CF_INLINE CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (8 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:127:70: error: attributes are not allowed on a function-definition 127 | CF_INLINE CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (16 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:128:69: error: attributes are not allowed on a function-definition 128 | CF_INLINE CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) API_AVAILABLE(macos(10.0))API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(n << 24));} | ^~~~~~~~~~~~~ gmake[2]: *** [_deps/sys_string-build/lib/CMakeFiles/sys_string.dir/build.make:86: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:312: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2 ```

All right, a quick ugrep:

$ ugrep MacOSX1 *
out/CMakeCache.txt
   210:   CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk
   459:   LIBXML2_INCLUDE_DIR:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/libxml2
   462:   LIBXML2_LIBRARY:FILEPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib/libxml2.tbd
   607:   pkgcfg_lib_PC_LIBXML_xml2:FILEPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib/libxml2.tbd
   851:   FIND_PACKAGE_MESSAGE_DETAILS_LibXml2:INTERNAL=[/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib/libxml2.tbd][/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/libxml2][v2.9.4()]
   964:   PC_LIBXML_INCLUDEDIR:INTERNAL=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include
   976:   PC_LIBXML_PREFIX:INTERNAL=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr

Uh-huh. What a mess we have here. That's ok, let's force the culprits to the "correct" libraries:

$ cmake -S . -B out -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFETCHCONTENT_QUIET=OFF .. -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -DLIBXML2_LIBRARY=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd -Dpkgcfg_lib_PC_LIBXML_xml2=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd
[...]
WSDDN_VERSION:1.14
-- The C compiler identification is GNU 14.1.0
-- The CXX compiler identification is GNU 14.1.0
[...]

No luck, though:

Building with GCC 14 and the 'correct' SDK
```make [...] [ 21%] Building CXX object _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/Availability.h:136, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/sys/_types/_fd_def.h:32, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/sys/types.h:184, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/config.h:17, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/utf_encoding.h:33, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/mappings.h:11, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/src/unicode_mappings.cpp:11: /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:126:70: error: attributes are not allowed on a function-definition 126 | CF_INLINE CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (8 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:127:70: error: attributes are not allowed on a function-definition 127 | CF_INLINE CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (16 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:128:69: error: attributes are not allowed on a function-definition 128 | CF_INLINE CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) API_AVAILABLE(macos(10.0))API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(n << 24));} | ^~~~~~~~~~~~~ gmake[2]: *** [_deps/sys_string-build/lib/CMakeFiles/sys_string.dir/build.make:86: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:312: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2 ```

All right, so maybe GCC 14 is "too new"? After installing gcc-13 from Homebrew (which has 13.3 — how far back in time should I go?), here are the results:

$ export CXX=/usr/local/bin/g++-13
$ export CC=/usr/local/bin/gcc-13
$ cmake -S . -B out -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFETCHCONTENT_QUIET=OFF .. -DCMAKE_C_COMPILER=/usr/local/bin/gcc-13 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-13 -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -DLIBXML2_LIBRARY=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd -Dpkgcfg_lib_PC_LIBXML_xml2=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd[ADeveloper/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd
[...]
WSDDN_VERSION:1.14
-- The C compiler identification is GNU 13.3.0
-- The CXX compiler identification is GNU 13.3.0
[...]

No problems at this stage (none were expected), but, alas, compiling is out of the question:

Building with GCC 13.3
```make [...] [ 19%] Built target spdlog [ 19%] Built target argum [ 21%] Building CXX object _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/Availability.h:136, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/sys/_types/_fd_def.h:32, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/include/sys/types.h:184, from /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/config.h:17, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/utf_encoding.h:33, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/inc/sys_string/impl/unicode/mappings.h:11, from /Users/gwyneth/Developer/wsdd-native/out/_deps/sys_string-src/lib/src/unicode_mappings.cpp:11: /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:126:70: error: attributes are not allowed on a function-definition 126 | CF_INLINE CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (8 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:127:70: error: attributes are not allowed on a function-definition 127 | CF_INLINE CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) API_AVAILABLE(macos(10.0)) API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(1UL << (16 + i)));} | ^~~~~~~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFUserNotification.h:128:69: error: attributes are not allowed on a function-definition 128 | CF_INLINE CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) API_AVAILABLE(macos(10.0))API_UNAVAILABLE(ios, watchos, tvos) {return ((CFOptionFlags)(n << 24));} | ^~~~~~~~~~~~~ gmake[2]: *** [_deps/sys_string-build/lib/CMakeFiles/sys_string.dir/build.make:86: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:312: _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2 ```

The End...?

I would guess that this "proves" that wsdd-native really can't be compiled under such an ancient setup as mine. Although, to be perfectly honest, there is a bit more that I can do, namely, trying to install the MacOSX13 SDK, and see what happens with that one. Theoretically, this should mess things up even more. But it might help with those obsolete declarations, which I'm presuming that they do not come from your code at all, but rather from the installed libraries (

But, on the other hand, I already have the 12 SDK installed — which I shouldn't, since Big Sur is still 11.X — and there seems to be no problem there. So, maybe, using a modern Clang (the one from Homebrew) and a more recent SDK version may result in a successful compilation?... perhaps. Or it might just compile... and then segfault 😭

I might try that approach too, though. But first I wanted to get some feedback.

GwynethLlewelyn commented 4 months ago

Update! Another potential solution! [no, it doesn't work, either]

So, why is the stupid linker not working properly?

After browsing a bit around the Web, and looking at the logs, namely out/CMakeFiles/wsddn.dir/link.txt, it suddenly dawned on me: by default, CMake 'assumes' that it's the compiler that calls the linker, but it's actually hard to pass flags between both. And, sure thing, a few peeking here and there showed me that CMake was invoking /usr/bin/ld — which is Apple's native LLVM linker (13.0.0) and not the Homebrew version! While theoretically this ought to me irrelevant under the LLVM environment (one assumes that the intermediate representation bytecode doesn't change that easily), there could be some differences. Let's find out!

$ export CC=/usr/local/opt/llvm/bin/clang
$ export CXX=/usr/local/opt/llvm/bin/clang++
$ export LDFLAGS="-L/usr/local/opt/bison/lib -fuse-ld=/usr/local/opt/llvm/bin/ld64.lld"
$ cmake -S . -B out -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFETCHCONTENT_QUIET=OFF -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DCMAKE_LINKER=/usr/local/opt/llvm/bin/ld64.lld -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk -DLIBXML2_LIBRARY=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd -Dpkgcfg_lib_PC_LIBXML_xml2=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk/usr/lib/libxml2.tbd -DCMAKE_LINKER_TYPE=lld_launcher -DCMAKE_C_USING_LINKER_lld_launcher="-fuse-ld=/usr/local/opt/llvm/bin/ld64.lld" -DCMAKE_CXX_USING_LINKER_lld_launcher="-fuse-ld=/usr/local/opt/llvm/bin/ld64.lld" ..

Note that very likely setting CC, CXX, and LDFLAGSexplicitly are not necessary (also, the inclusion of bison on the LDFLAGS comes from building another set of unrelated tools; I didn't check if bison is actually being used or not)

I'm posting the whole compilation transcript here, from the very beginning, because, as you can see, the included vendor libraries, which are statically linked, work flawlessly under this configuration (so it's not a linker error per se). It's just wsddn that fails to get properly linked due to some missing symbols:

cmake --build out, now for Homebrew Clang + correct linker
```make [ 1%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.o In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/src/format.cc:8: In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format-inl.h:18: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/locale:202: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__locale:23: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string:625: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string_view:213: /usr/local/opt/llvm/bin/../include/c++/v1/__fwd/string_view.h:22:41: warning: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t orchar32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 19, so please migrate off of it. [-Wdeprecated-declarations] 22 | template > | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:361:26: note: in instantiation of default argument for 'basic_string_view' required here 361 | template using std_string_view = std::basic_string_view; | ^~~~~ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:452:50: note: in instantiation of template type alias 'std_string_view' requested here 452 | S, detail::std_string_view>::value)> | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format.h:737:57: note: in instantiation of template class 'fmt::basic_string_view' requested here 737 | inline auto compute_width(basic_string_view s) -> size_t { | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__string/char_traits.h:81:8: note: 'char_traits' has been explicitly marked deprecated here 81 | struct _LIBCPP_DEPRECATED_( | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__config:975:53: note: expanded from macro '_LIBCPP_DEPRECATED_' 975 | # define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) | ^ 1 warning generated. [ 3%] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.o In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/src/os.cc:13: In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/os.h:14: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/system_error:150: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__system_error/error_category.h:15: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string:625: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string_view:213: /usr/local/opt/llvm/bin/../include/c++/v1/__fwd/string_view.h:22:41: warning: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t orchar32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 19, so please migrate off of it. [-Wdeprecated-declarations] 22 | template > | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:361:26: note: in instantiation of default argument for 'basic_string_view' required here 361 | template using std_string_view = std::basic_string_view; | ^~~~~ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:452:50: note: in instantiation of template type alias 'std_string_view' requested here 452 | S, detail::std_string_view>::value)> | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format.h:737:57: note: in instantiation of template class 'fmt::basic_string_view' requested here 737 | inline auto compute_width(basic_string_view s) -> size_t { | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__string/char_traits.h:81:8: note: 'char_traits' has been explicitly marked deprecated here 81 | struct _LIBCPP_DEPRECATED_( | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__config:975:53: note: expanded from macro '_LIBCPP_DEPRECATED_' 975 | # define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) | ^ 1 warning generated. [ 5%] Linking CXX static library libfmt.a [ 5%] Built target fmt [ 7%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/spdlog.cpp.o [ 9%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/stdout_sinks.cpp.o In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/spdlog-src/src/stdout_sinks.cpp:8: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/mutex:192: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__condition_variable/condition_variable.h:17: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__mutex/unique_lock.h:17: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__system_error/system_error.h:14: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__system_error/error_category.h:15: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string:625: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string_view:213: /usr/local/opt/llvm/bin/../include/c++/v1/__fwd/string_view.h:22:41: warning: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t orchar32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 19, so please migrate off of it. [-Wdeprecated-declarations] 22 | template > | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:361:26: note: in instantiation of default argument for 'basic_string_view' required here 361 | template using std_string_view = std::basic_string_view; | ^~~~~ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:452:50: note: in instantiation of template type alias 'std_string_view' requested here 452 | S, detail::std_string_view>::value)> | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format.h:737:57: note: in instantiation of template class 'fmt::basic_string_view' requested here 737 | inline auto compute_width(basic_string_view s) -> size_t { | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__string/char_traits.h:81:8: note: 'char_traits' has been explicitly marked deprecated here 81 | struct _LIBCPP_DEPRECATED_( | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__config:975:53: note: expanded from macro '_LIBCPP_DEPRECATED_' 975 | # define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) | ^ 1 warning generated. [ 11%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/color_sinks.cpp.o In file included from /Users/gwyneth/Developer/wsdd-native/out/_deps/spdlog-src/src/color_sinks.cpp:8: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/mutex:192: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__condition_variable/condition_variable.h:17: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__mutex/unique_lock.h:17: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__system_error/system_error.h:14: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/__system_error/error_category.h:15: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string:625: In file included from /usr/local/opt/llvm/bin/../include/c++/v1/string_view:213: /usr/local/opt/llvm/bin/../include/c++/v1/__fwd/string_view.h:22:41: warning: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t orchar32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 19, so please migrate off of it. [-Wdeprecated-declarations] 22 | template > | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:361:26: note: in instantiation of default argument for 'basic_string_view' required here 361 | template using std_string_view = std::basic_string_view; | ^~~~~ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/core.h:452:50: note: in instantiation of template type alias 'std_string_view' requested here 452 | S, detail::std_string_view>::value)> | ^ /Users/gwyneth/Developer/wsdd-native/out/_deps/fmt-src/include/fmt/format.h:737:57: note: in instantiation of template class 'fmt::basic_string_view' requested here 737 | inline auto compute_width(basic_string_view s) -> size_t { | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__string/char_traits.h:81:8: note: 'char_traits' has been explicitly marked deprecated here 81 | struct _LIBCPP_DEPRECATED_( | ^ /usr/local/opt/llvm/bin/../include/c++/v1/__config:975:53: note: expanded from macro '_LIBCPP_DEPRECATED_' 975 | # define _LIBCPP_DEPRECATED_(m) __attribute__((__deprecated__(m))) | ^ 1 warning generated. [ 13%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/file_sinks.cpp.o [ 15%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/async.cpp.o [ 17%] Building CXX object _deps/spdlog-build/CMakeFiles/spdlog.dir/src/cfg.cpp.o [ 19%] Linking CXX static library libspdlog.a [ 19%] Built target spdlog [ 19%] Built target argum [ 21%] Building CXX object _deps/sys_string-build/lib/CMakeFiles/sys_string.dir/src/unicode_mappings.cpp.o [ 23%] Linking CXX static library libsys_string.a [ 25%] Built target sys_string [ 25%] Built target isptr [ 25%] Built target ptl [ 26%] Generating include/uuid/uuid.h [ 28%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/clear.c.o [ 30%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/compare.c.o [ 32%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/copy.c.o [ 34%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/gen_uuid.c.o [ 36%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/isnull.c.o [ 38%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/pack.c.o [ 40%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/parse.c.o [ 42%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/unpack.c.o [ 44%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/unparse.c.o [ 46%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/uuid_time.c.o [ 48%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/libuuid/src/predefined.c.o [ 50%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/lib/randutils.c.o [ 51%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/lib/md5.c.o [ 53%] Building C object _deps/libuuid-build/CMakeFiles/uuid_static.dir/__/util-linux-src/lib/sha1.c.o [ 55%] Linking C static library libuuid_static.a [ 55%] Built target uuid_static [ 57%] Building CXX object CMakeFiles/wsddn.dir/cmake_pch.hxx.pch [ 59%] Building CXX object CMakeFiles/wsddn.dir/src/sys_util.cpp.o [ 61%] Building CXX object CMakeFiles/wsddn.dir/src/sys_util_mac.cpp.o [ 63%] Building CXX object CMakeFiles/wsddn.dir/src/interface_monitor_bsd.cpp.o [ 65%] Building CXX object CMakeFiles/wsddn.dir/src/interface_monitor_linux.cpp.o [ 67%] Building CXX object CMakeFiles/wsddn.dir/src/http_request_parser.cpp.o [ 69%] Building CXX object CMakeFiles/wsddn.dir/src/http_request.cpp.o [ 71%] Building CXX object CMakeFiles/wsddn.dir/src/http_response.cpp.o [ 73%] Building CXX object CMakeFiles/wsddn.dir/src/http_server.cpp.o [ 75%] Building CXX object CMakeFiles/wsddn.dir/src/udp_server.cpp.o [ 76%] Building CXX object CMakeFiles/wsddn.dir/src/wsd_server.cpp.o [ 78%] Building CXX object CMakeFiles/wsddn.dir/src/server_manager.cpp.o [ 80%] Building CXX object CMakeFiles/wsddn.dir/src/app_state.cpp.o [ 82%] Building CXX object CMakeFiles/wsddn.dir/src/config.cpp.o [ 84%] Building CXX object CMakeFiles/wsddn.dir/src/config_mac.cpp.o [ 86%] Building CXX object CMakeFiles/wsddn.dir/src/config_samba.cpp.o [ 88%] Building CXX object CMakeFiles/wsddn.dir/src/command_line.cpp.o [ 90%] Building CXX object CMakeFiles/wsddn.dir/src/exc_handling.cpp.o [ 92%] Building CXX object CMakeFiles/wsddn.dir/src/main.cpp.o [ 94%] Linking CXX executable wsddn ld64.lld: error: undefined symbol: std::exception_ptr::__from_native_exception_pointer(void*) >>> referenced by exception_ptr.h:97 (/usr/local/opt/llvm/bin/../include/c++/v1/__exception/exception_ptr.h:97) >>> /tmp/lto.tmp:(symbol asio::detail::thread_info_base::capture_current_exception()+0xc4) ld64.lld: error: undefined symbol: __cxa_init_primary_exception >>> referenced by exception_ptr.h:91 (/usr/local/opt/llvm/bin/../include/c++/v1/__exception/exception_ptr.h:91) >>> /tmp/lto.tmp:(symbol asio::detail::thread_info_base::capture_current_exception()+0xa4) ld64.lld: error: undefined symbol: vtable for std::__1::basic_stringbuf, std::__1::allocator> >>> referenced by sstream:325 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:325) >>> /tmp/lto.tmp:(symbol toml::v3::impl::impl_ex::parser::parse_float()+0x36c) >>> referenced by sstream:325 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:325) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&)+0xb2) >>> referenced by sstream:1101 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:1101) >>> /tmp/lto.tmp:(symbol std::__1::basic_stringstream, std::__1::allocator>::~basic_stringstream()+0x35) >>> referenced 1 more times ld64.lld: error: undefined symbol: VTT for std::__1::basic_stringstream, std::__1::allocator> >>> referenced by istream:201 (/usr/local/opt/llvm/bin/../include/c++/v1/istream:201) >>> /tmp/lto.tmp:(symbol toml::v3::impl::impl_ex::parser::parse_float()+0x2a7) >>> referenced by sstream:1102 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:1102) >>> /tmp/lto.tmp:(symbol std::__1::basic_stringstream, std::__1::allocator>::~basic_stringstream()+0x10) ld64.lld: error: undefined symbol: vtable for std::__1::basic_stringstream, std::__1::allocator> >>> referenced by sstream:1010 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:1010) >>> /tmp/lto.tmp:(symbol toml::v3::impl::impl_ex::parser::parse_float()+0x27c) ld64.lld: error: undefined symbol: VTT for std::__1::basic_ostringstream, std::__1::allocator> >>> referenced by parser.inl:0 (_deps/tomlplusplus-src/include/toml++/impl/parser.inl:0) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&)+0x24d) >>> referenced by new:0 (/usr/local/opt/llvm/bin/../include/c++/v1/new:0) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&)+0x1cd) >>> referenced by ostream:218 (/usr/local/opt/llvm/bin/../include/c++/v1/ostream:218) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&)+0x44) >>> referenced 3 more times ld64.lld: error: undefined symbol: vtable for std::__1::basic_ostringstream, std::__1::allocator> >>> referenced by sstream:901 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:901) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::concatenate(char*&, char*, unsigned long long const&)+0x2b) >>> referenced by sstream:901 (/usr/local/opt/llvm/bin/../include/c++/v1/sstream:901) >>> /tmp/lto.tmp:(symbol void toml::v3::impl::error_builder::append(int const&)+0x36) clang++: error: linker command failed with exit code 1 (use -v to see invocation) gmake[2]: *** [CMakeFiles/wsddn.dir/build.make:428: wsddn] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:234: CMakeFiles/wsddn.dir/all] Error 2 gmake: *** [Makefile:136: all] Error 2 ```

So, while the linking errors have a different presentation, they are pretty much the same. Since I have very little experience with such complex toolsets, I can't do much more than post the above transcripts here. I would suspect that what is being flagged as "warnings" are actually more serious. It seems obvious that those char_traits<char> marked as deprecated are not behaving as expected, and this is true for all compilers. But beyond that very wild guess, I have no idea what can be done to fix this, or even if it's fixable at all. As said above, my last chance is to get a more recent SDK and try again, but I'm reluctant to do so, since, AFAICS, the errors are coming from fmt-src and whatever it calls (or whatever it is being called for) — not from the SDK itself. Although I really don't know — it's always possible that 'fixing' whatever makes the current linking step fail might just trigger another hidden link failure, which, however, is being masked by this one. Who knows? 🤷‍♀️

gershnik commented 4 months ago

Wow, sorry you had to spend so much time on this! Your OS should be supported - the minimum is currently set to 10.15 but obviously it doesn't work, I suspect due to one of the dependent libraries. Let's me see if I can figure it out. First to answer some question you had

Now to the linker errors themselves. They are at the first blush truly bizarre because how can basic_ostringstream<char> be missing - it is an old and stable, non-deprecated, part of C++ standard library since like 1991. Which tells me that most likely there is some mismatch of system libraries or wrong standard library is being linked.

The easiest way to diagnose what is going on is to make CMake print out the exact compilation/linking command being executed. To do so on newer CMake you can pass --verbose flag. Something like

cmake --build out --verbose 

You probably also want to build debug config to begin with rather than release to get rid of lto.c stuff. To do this pass the following during configure:

cmake -S source_dir -B out_dir -DCMAKE_BUILD_TYPE=Debug 

With that hopefully the linker command line will shed some light on what libraries is it trying to pull in and from where.

As far as GCC goes - I don't think it will solve anything - the missing symbols are from system libraries and any compiler will have to get to them one way or another.

Let me know how it goes. I think nowadays there is a relatively easy way to run an older macOS in a virtual machine so I might just set it up to try to reproduce your setup but it will take some time.

Apologies again for all the hassle you had to go through.

gershnik commented 4 months ago

Also after some googling around it appears that similar errors happen when there is something broken in Apple command line tools / brew or both. See e.g. https://stackoverflow.com/questions/75749674/how-can-i-resolve-undefined-symbols-when-using-stdofstream-on-a-mac or https://stackoverflow.com/questions/71888715/why-does-apple-clang-not-support-stdifstream

Perhaps removing and reinstalling dev tools and "doctoring" brew might help here too?

gershnik commented 4 months ago

Oh and the really interesting question is why the pre-built installed version crashes. Generally you don't need a core file for that. There should be a descriptive crash report in Console.app: look under Crash Reports. Let me know if there is anything from wsddn there.

gershnik commented 4 months ago

Ok I think I got to the bottom of the main issue. I have managed to install Big Sur in a VM (somewhat of an adventure) and indeed trying the official installer produces exactly the same result as you observed - segmentation fault. After looking up where it happens in debug symbols for that build (which I have) - big surprise - it is somewhere where no crash should be logically possible (I'll spare you the details). What on earth? Ok, I build a debug version, run it on that machine... and it works perfectly. Maybe it's Debug vs. Release? I tried Release version... and it works too. Finally I made a full blown .pkg installer build with Apple notarization and all the bells and whistles... and it works great too. Then it dawned at me that the only difference between what I am doing and the "official" build is where it is being built. Mine is on my laptop with latest and greatest Xcode, the official was done on Github action runner with an older one. So what we have here is plainly an Xcode bug that got fixed in later version. Sigh. I need to think a bit what would be the best way to fix it this without resorting to manual builds but the fix is upcoming.

Now I am going to look at CMake build on Big Sur.

GwynethLlewelyn commented 4 months ago

Wow, thanks so much for your detective work!

For the sake of the argument, I don't have the full XCode installed — only the command-line utilities (I don't really like XCode). That might make a difference, since I presume that's also all that the GitHub action runner has access to.

But sure, I'm aware that there must be a lot of rubbish in my overall configuration 🤣 That's no surprise — there are some leftover bits and pieces on my system that may go as far back as 2001. Every now and then, I find a binary that has been compiled for the PowerPC architecture (these days, mostly dynamically-loaded plugins for apps I've uninstalled eons ago but which weren't cleaned up by the uninstall procedure). So, aye, there are several archaeologic layers of "mess" over there. Duplicate libraries with the same symbols are particularly nasty, and I seem to have lots of those, accumulated over the years. That's why nothing in your thorough explanations surprises me.

Running brew doctor on my system is, well, due to find tons of issues (and the list grows!). Most, however, are easy to explain. You see, whenever there is a formula upgrade, Homebrew insists in installing the sources and compile them locally. If the compilation fails for some reason, I try to get it fixed. Sometimes, there is a dependency or other which I cannot get to work within Homebrew's own environment — sonI have no other choice but to compile them separately from Homebrew. Eventually what happens is that a subsequent ./configure (on things using CMake, of course) will find all the dependencies correctly installed and proceeds towards a successful conclusion — one that includes, at the end, registering the formula as being "installed & active". But that comes at the cost of having "skipped" one or more official dependency installs. Homebrew doesn't care much (at the compilation level), but brew doctor will find all those cases where the configuration was "hacked" and is, to a degree, "broken".

But sure, every now and then, I tend to clean-up those things, with more or less success; sometimes, more recent versions of the same libraries/packags/formulae etc. will fix things again.

But the truth is that, In any case, I don't really insist in having a feasible, working CMake build on Big Sur :) — a working binary is more than enough, to be honest. After all, the only thing I'm trying to test is if the lack of WS support is what makes my Mac "invisible" to PCs running Windows 10.

Nevertheless, I'm going to follow some of your suggestions and see what I can do!

gershnik commented 4 months ago

Ok, first of all, if you try to install again via Homebrew it should bring version 1.14.1 that (fingers crossed) should work fine on Big Sur.

Re Xcode vs. command-line tools there is no difference when using them from CMake command line builds. Both include the same compiler, frameworks and tools in the same layout which is all CMake is using. I am actually not sure whether GitHub runner images have full Xcode or command-line tools only installed (they have multiple versions side-by-side too) but it shouldn't matter at all.

As far as building on Big Sur it works fine with one fix I just committed which is unrelated to the issue you have been seeing. Here is what definitely works now:

So I can only assume that the linker issue you have encountered is caused by some mixup between Homebrew and Xcode command-line tools.

However, as you have said, assuming 1.14.1 fixes your issue this is of no importance.

Let me know whether it works for you.

Thank you again for reporting and your patience! It's a really nasty bug.

GwynethLlewelyn commented 4 months ago

Hi again! Whatever magic you did — 1.14.1 fixed it! I cannot say how relieved I am. And I did nothing more than simply run brew upgrade (after re-adding your repo, of course). The daemon is now running flawlessly on the background, for many hours, without a glitch. It "survived" two reboots (I was just tweaking and experimenting with different settings), so, from my perspective, I'll close this issue and mark it as fixed!

Thanks for all the trouble in fixing a stupid bug which will only affect ancient Macs :-P Who knows, perhaps your fix also somehow helps out other builds of wsddn to be more robust. Then all the time you spent was not utterly wasted!

Naturally enough, I was curious to see if I could follow your instructions and try to recompile everything from scratch — knowing now that the wsddn issue is fixed, and all errors must be on my side (no surprises there!!).

While doing so, I found lots of things I never knew about my Mac 🤣

First of all — I learned that Console.app is actually useful for something! I thought it was merely a fancy GUI just for viewing some standard logs which I view with tail -f /var/log/... anyway. Perhaps that might have been the case in the past (I don't know!), but I certainly didn't think of Console.app to be the equivalent to systemd's journal — just, well, Apple-ified, like they are so often fond to do. There is a massive amount of most interesting information there which I had no idea about. So... thanks so much for the lesson!

Secondly — sadly, while running macOS 11.7.9, I'm not "allowed" to install XCode 13.X — the highest I'm "allowed" is 12.X (which doesn't get any updates, of course). Worse than that, I cannot even _re_install those tools (at least not via xcode-select or softwareupdate...).

Thirdly — I'm persuaded that you're absolutely right in your assessment: the compilation errors I've got are due to the many conflicts between the Apple Clang, the Homebrew Clang, the Homebrew GCC, and the XCode 12.X tools. They perversely conspire against each other to break everything 😁 No wonder, therefore, that I fail to compile things via Homebrew. Possibly, the Homebrew team seriously suspects that most 10-year-old Macs out there are hopelessly messed up in terms of overall compilation environment, and so — wisely — refuse to give any kind of support to ancient platforms (not even at the most basic level, i.e. submitting issues...).

In any case, as said, the issue is now fixed for me — I'll post further details as soon as I get the latest version of Hombrew's Clang to compile itself. I suspect it will take the whole night (at least)...

gershnik commented 4 months ago

Really glad that this issue is solved and you are unblocked!

I could go on a long rant about how bad Console.app is (and how much worse it's gotten nowadays) but it has its uses like getting crash info and logs and crashes from connected iDevices (if you have an iDevice open the Console with the device connected to your Mac). Beyond that, it's pretty bad. The real equivalent to systemd journalctl is the log command line tool. What I find ironic is that systemd started as launchd knock-off but now it far surpasses the original in usability and features.

Strange that you cannot install command-line tools 13. When I installed the default ones (via xcode-select --install) on my VM the Software Update in Settings immediately offered me to update to 13. My understanding and also according to https://en.wikipedia.org/wiki/Xcode (expand "Xcode 11.0 - 14.x" table) version 13 is supported on Big Sur.

One other thing to I'd try if you are still interested is to configure wsddn with

cmake -S . -B out -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWSDDN_PREFER_SYSTEM=OFF

this will prevent it from using whatever libxml homebrew contains and it will instead compile it from sources (same as what happens with libuuid). I have a nasty suspicion that it is the external libxml that introduces the mismatch of system libraries but this is just a guess.

gershnik commented 4 months ago

Oh and BTW have you considered MacPorts? I am not a big fan of Homebrew because of its insistence to muck with the system security (see e.g. https://applehelpwriter.com/2018/03/21/how-homebrew-invites-users-to-get-pwned/) out of ridiculous desire to avoid sudo. MacPorts has less stuff (it is much harder for developers to support) and its equivalent of taps is much harder to set up. On the other hands it seems to be more robust and I believe better support for older systems (but perhaps I am wrong)