Ubuntu 22.04 cilent build of v2.4.11.0 segfaults

After running fine on 20.04, upgrading to 22.04 makes /usr/local/sbin/urbackupclientbackend version v2.4.11.0 segfault.

urbackup.log:

2022-07-08 21:12:40: SQLite: recovered 455 frames from WAL file /usr/local/var/urbackup/backup_client.db-wal code: 283
2022-07-08 21:12:40: urbackupserver: Server started up successfully!
2022-07-08 21:12:40: FileSrv: Servername: -quadrireme-
2022-07-08 21:12:40: Started UrBackupClient Backend...
2022-07-08 21:12:41: Looking for old Sessions... 0 sessions
2022-07-08 21:12:41: Final path: /home/pj/Documents
2022-07-08 21:12:41: Final path: /home/pj/Pictures
2022-07-08 21:12:41: Final path: /home/pj/proj

stdout/stderr log:

# systemctl status urbackup.service 
× urbackup.service - urbackupclientbackend
     Loaded: loaded (/etc/systemd/system/urbackup.service; enabled; vendor preset: enabled)
     Active: failed (Result: core-dump) since Fri 2022-07-08 21:13:50 EDT; 3h 0min ago
   Main PID: 4190548 (code=dumped, signal=SEGV)
        CPU: 19ms

Jul 08 21:12:40 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:40: SQLite: recovered 455 frames from WAL file /usr/local/var/urbackup/backup_client.db-wal code: 283
Jul 08 21:12:40 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:40: urbackupserver: Server started up successfully!
Jul 08 21:12:40 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:40: FileSrv: Servername: -quadrireme-
Jul 08 21:12:40 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:40: Started UrBackupClient Backend...
Jul 08 21:12:41 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:41: Looking for old Sessions... 0 sessions
Jul 08 21:12:41 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:41: Final path: /home/pj/Documents
Jul 08 21:12:41 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:41: Final path: /home/pj/Pictures
Jul 08 21:12:41 quadrireme urbackupclientbackend[4190548]: 2022-07-08 21:12:41: Final path: /home/pj/proj
Jul 08 21:13:50 quadrireme systemd[1]: urbackup.service: Main process exited, code=dumped, status=11/SEGV
Jul 08 21:13:50 quadrireme systemd[1]: urbackup.service: Failed with result 'core-dump'.

After enabling coredumps, I got you a coredump trace:

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/local/sbin/urbackupclientbackend -v info'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f30bfd52a68 in ?? () from /lib/x86_64-linux-gnu/libcrypto++.so.8
[Current thread is 1 (Thread 0x7f30ae7fc640 (LWP 208905))]
(gdb) bt
#0  0x00007f30bfd52a68 in ?? () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#1  0x00007f30bfd59e39 in CryptoPP::SHA256::HashMultipleBlocks(unsigned int const*, unsigned long) () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#2  0x00007f30bfcf5cfe in CryptoPP::IteratedHashBase<unsigned int, CryptoPP::HashTransformation>::TruncatedFinal(unsigned char*, unsigned long) ()
   from /lib/x86_64-linux-gnu/libcrypto++.so.8
#3  0x00007f30bfce6e9b in CryptoPP::DL_SignatureMessageEncodingMethod_DSA::ComputeMessageRepresentative(CryptoPP::RandomNumberGenerator&, unsigned char const*, unsigned long, CryptoPP::HashTransformation&, std::pair<unsigned char const*, unsigned int>, bool, unsigned char*, unsigned long) const () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#4  0x0000558ed18d8c57 in CryptoPP::DL_VerifierBase<CryptoPP::EC2NPoint>::VerifyAndRestart (this=<optimized out>, messageAccumulator=...) at /usr/include/cryptopp/pubkey.h:1754
#5  0x00007f30bfcc889a in CryptoPP::SignatureVerificationFilter::LastPut(unsigned char const*, unsigned long) () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#6  0x00007f30bfcc7775 in CryptoPP::FilterWithBufferedInput::PutMaybeModifiable(unsigned char*, unsigned long, int, bool, bool) () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#7  0x00007f30bfc000eb in CryptoPP::BufferedTransformation::TransferMessagesTo2(CryptoPP::BufferedTransformation&, unsigned int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#8  0x00007f30bfc00234 in CryptoPP::BufferedTransformation::TransferAllTo2(CryptoPP::BufferedTransformation&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) () from /lib/x86_64-linux-gnu/libcrypto++.so.8
#9  0x0000558ed18d2f2c in CryptoPP::Source::PumpAll (this=0x7f30ae7fb6a0) at /usr/include/cryptopp/filters.h:1383
#10 CryptoPP::Source::SourceInitialize (pumpAll=true, parameters=warning: RTTI symbol not found for class 'CryptoPP::AlgorithmParameters'
..., this=0x7f30ae7fb6a0) at /usr/include/cryptopp/filters.h:1420
#11 CryptoPP::Source::SourceInitialize (parameters=warning: RTTI symbol not found for class 'CryptoPP::AlgorithmParameters'
..., pumpAll=true, this=0x7f30ae7fb6a0) at /usr/include/cryptopp/filters.h:1416
#12 CryptoPP::StringSource::StringSource (this=0x7f30ae7fb6a0, string=0x7f309003ba80 "lH9oYnJ8xrVEKWXGLk2DTWcYNysbCl-1657337836-701900852", length=51, pumpAll=<optimized out>, 
    attachment=<optimized out>) at /usr/include/cryptopp/filters.h:1479
#13 0x0000558ed18c378a in CryptoFactory::verifyData (this=<optimized out>, pubkey=..., data="lH9oYnJ8xrVEKWXGLk2DTWcYNysbCl-1657337836-701900852", 
    signature="\024\000\250\311R\252\036\036\302D\237\070\313\331&\v6\033$\246\267\f\371P\204(,\252\253\061[\271$\205\357!\340$\223k[ʦ\253\377\300\215\021\005B\267j\327S\265\367\352\314\361\066\305\310\343\343QD\323\006r!(\245\362\212n\366\006J\317\061,\324|\252(\b\316pM\377\365\211\277\260\003m\224\256x`", <incomplete sequence \327>)
    at /usr/include/c++/11/bits/basic_string.h:194
#14 0x0000558ed19924d5 in ClientConnector::CMD_SIGNATURE (this=this@entry=0x7f309003bac0, identity="rYZkG6E7bYUtqENjjfIl", 
    cmd="SIGNATURE#pubkey=MIIBtzCCASwGByqGSM44BAEwggEfAoGBAKb/PIjh8DDAGoBtJWJzPejhgMjCq+m8WsSCnxyRrDkK1WT1uFBLK9hhZ1dzeC4xXte5Np0AgENwGaXrJWLqZRh6lF8nbqswDSvHyhMyY/Wty315IXKo1TuZ3YwlrlXaW+GJ7lREIIqe2F5yvkAoSdX"...) at urbackupclient/ClientServiceCMD.cpp:205
#15 0x0000558ed19662f2 in ClientConnector::ReceivePackets (this=0x7f309003bac0, p_run_other=<optimized out>) at urbackupclient/ClientService.cpp:982
#16 0x0000558ed1799388 in CServiceWorker::work (this=0x7f309c000bc0, skip_client=<optimized out>) at ServiceWorker.cpp:245
#17 0x0000558ed1799af8 in CServiceWorker::operator() (this=0x7f309c000bc0) at ServiceWorker.cpp:291
#18 0x0000558ed1789053 in thread_helper_f (t=0x7f309c000bc0) at Server.cpp:1474
#19 0x00007f30beff4b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#20 0x00007f30bf086a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

And then after trying to make an issue on JIRA (but failing because the client version I’m using isn’t a viable option), I decided to post this here.

Any help?

It seems to be linked to /lib/x86_64-linux-gnu/libcrypto++.so.8. Where did you get that client from?

I built it from source. Is there some restriction or spec on what version of libcrypto to use?

I built it from source. Is there some restriction or spec on what version of libcrypto to use?