tsschecker
tsschecker copied to clipboard
Segfault when interfacing with libcurl (Ubuntu 18.04)
I'm running tsschecker 277 (ee5f44c) on GalliumOS 3.0 (Ubuntu 18.04 Bionic).
When I use tsschecker to do anything that requires libcurl (i.e. interfacing with Apple's servers), it segfaults. Examples:
$ tsschecker -d iPhone3,1 --list-ios Version: ee5f44c2351320fee43e66fc81f5812ba3992d2c - 277 Segmentation fault (core dumped)
$ tsschecker -d iPad4,4 -e [ECID] -s -i 12.3 Version: ee5f44c2351320fee43e66fc81f5812ba3992d2c - 277 Segmentation fault (core dumped)
I've read that there are some issues with libcurl and Ubuntu 18.04 when it comes to tsschecker, and that these segfaults may be symptoms of those issues. I followed the instructions here to "install" libcurl3 alongside libcurl4, which ultimately results in a different error:
$ env LD_PRELOAD=/usr/lib/libcurl.so.3 tsschecker -d iPhone3,1 --list-ios tsschecker: /usr/lib/libcurl.so.3: version `CURL_OPENSSL_4' not found (required by tsschecker) tsschecker: /usr/lib/libcurl.so.3: version `CURL_OPENSSL_4' not found (required by /usr/local/lib/libfragmentzip.so.0)
I'm assuming this is because tsschecker compiled against libcurl4 by default, though I'm not sure how I could fix that.
Did you seen note in ReadMe?
@s0uthwest Yes; I mentioned above that I had followed the guide in the README, which ultimately resulted in the following:
$ env LD_PRELOAD=/usr/lib/libcurl.so.3 tsschecker -d iPhone3,1 --list-ios tsschecker: /usr/lib/libcurl.so.3: version `CURL_OPENSSL_4' not found (required by tsschecker) tsschecker: /usr/lib/libcurl.so.3: version `CURL_OPENSSL_4' not found (required by /usr/local/lib/libfragmentzip.so.0)
Hmmmm, very interesting. Try to compile curl: https://github.com/curl/curl from here and compile TSSChecker with this version...
@s0uthwest I've compiled curl from the specified repository, and recompiled both libfragmentzip and tsschecker against the new libcurl. Still, I encounter the same error.
$ tsschecker -d iPhone3,1 --list-ios Version: b2ea39564523aaa09478ccd00c9ca811c53479c0 - 281 Segmentation fault (core dumped)
(Then again, this may be partially/entirely due to the fact that my Ubuntu machine is now a mess of manually compiled binaries, dummy packages, and symlinks to potentially non-existent libraries.)
Using libcurl.so.4 is working on Ubuntu 20.04 LTS (5.4.0-40-generic)
[root@omega:/media/theodisbutler/RECOVERY/Mobile/tsschecker/tsschecker# ldd tsschecker
linux-vdso.so.1 (0x00007ffcf9bbe000)
libplist.so.3 => /usr/lib/x86_64-linux-gnu/libplist.so.3 (0x00007f084fad3000)
libfragmentzip.so.0 => /usr/local/lib/libfragmentzip.so.0 (0x00007f084facd000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x00007f084f815000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f084f53f000)
libirecovery.so.1 => /usr/local/lib/libirecovery.so.1 (0x00007f084f535000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f084f3e6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f084f1f2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f084f1cf000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f084f1b3000)
libquiche.so => /usr/src/curl/../quiche/target/release/libquiche.so (0x00007f084eee6000)
libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f084eebd000)
libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f084ee9d000)
librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f084ee7b000)
libssh2.so.1 => /usr/lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f084ee4c000)
libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f084ee39000)
libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f084ede3000)
liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f084edd2000)
libbrotlidec.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f084edc3000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f084edbb000)
libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f084ed9f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f084fb47000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f084ed94000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f084ed79000)
libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f084ebf7000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f084ea1f000)
libhogweed.so.5 => /usr/lib/x86_64-linux-gnu/libhogweed.so.5 (0x00007f084e9e7000)
libnettle.so.7 => /usr/lib/x86_64-linux-gnu/libnettle.so.7 (0x00007f084e9ad000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f084e929000)
libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f084e80b000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f084e7ef000)
libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f084e7d0000)
libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f084e78b000)
libbrotlicommon.so.1 => /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f084e768000)
libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f084e73c000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f084e606000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f084e5ee000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f084e5cb000)
libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f084e5bf000)
libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f084e52c000)
libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f084e485000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f084e47c000)
libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f084e444000)
libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f084e42b000)
libffi.so.7 => /usr/lib/x86_64-linux-gnu/libffi.so.7 (0x00007f084e41f000)
libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f084e3f5000)
libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f084e3e1000)
libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f084e393000)
libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00007f084e086000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f084e04b000)