boringssl symbols conflict with openssl in component builds

Bug #1607411 reported by Chris Coulson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
Triaged
High
Unassigned

Bug Description

I imagine this has been happening for a while, but it's just recently started causing crashes like this, probably due to ABI differences between openssl/boringssl:

Thread 1 "qmltest_api" received signal SIGSEGV, Segmentation fault.
__GI___pthread_rwlock_wrlock (rwlock=rwlock@entry=0x1) at pthread_rwlock_wrlock.c:100
100 pthread_rwlock_wrlock.c: No such file or directory.
(gdb) bt
#0 0x00007ffff5864854 in __GI___pthread_rwlock_wrlock (rwlock=rwlock@entry=0x1) at pthread_rwlock_wrlock.c:100
#1 0x00007fffef5df219 in CRYPTO_MUTEX_lock_write (lock=lock@entry=0x1) at ../../third_party/boringssl/src/crypto/thread_pthread.c:71
#2 0x00007fffef5c850f in CRYPTO_get_ex_new_index (ex_data_class=0x1, out_index=0x0, argl=0, argp=0x0, dup_func=0x0, free_func=0x0) at ../../third_party/boringssl/src/crypto/ex_data.c:148
#3 0x00007ffff757a370 in QSslSocketPrivate::ensureLibraryLoaded() () at ssl/qsslsocket_openssl.cpp:486
#4 0x00007ffff757cfed in QSslSocketPrivate::ensureInitialized() () at ssl/qsslsocket_openssl.cpp:608
#5 0x00007ffff757cfed in QSslSocketPrivate::ensureInitialized() () at ssl/qsslsocket_openssl.cpp:462
#6 0x00007ffff757cfed in QSslSocketPrivate::ensureInitialized() () at ssl/qsslsocket_openssl.cpp:604
#7 0x00007ffff75605d7 in QSslCertificate::QSslCertificate(QByteArray const&, QSsl::EncodingFormat) (this=0x997210) at ssl/qsslcertificate_p.h:79
#8 0x00007ffff75605d7 in QSslCertificate::QSslCertificate(QByteArray const&, QSsl::EncodingFormat) (this=0x7fffffff6800, data=..., format=QSsl::Der) at ssl/qsslcertificate.cpp:151
#9 0x00007ffff7e96e3b in OxideQSslCertificate::fingerprintSHA1() const (this=<optimised out>) at ../../oxide/qt/core/api/oxideqsslcertificate.cc:226
#10 0x00007ffff7e8e3e0 in OxideQSslCertificate::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimised out>, _c=<optimised out>, _id=<optimised out>, _a=<optimised out>)
    at gen/oxide/qt/core/api/moc_oxideqsslcertificate.cc:147
#11 0x00007ffff78a611d in QV4::QQmlValueTypeWrapper::get(QV4::Managed*, QV4::String*, bool*) (m=<optimised out>, name=<optimised out>, hasProperty=0x0) at qml/qqmlvaluetypewrapper.cpp:374
#12 0x00007ffff780d90e in QV4::Runtime::getProperty(QV4::ExecutionEngine*, QV4::Value const&, int) (hasProperty=0x0, name=<optimised out>, this=<optimised out>) at jsruntime/qv4object_p.h:279
#13 0x00007ffff780d90e in QV4::Runtime::getProperty(QV4::ExecutionEngine*, QV4::Value const&, int) (engine=0x8f6910, object=..., nameIndex=<optimised out>) at jsruntime/qv4runtime.cpp:679
#14 0x00007fffc5aa0a8d in ()
#15 0x0000000000a16680 in ()
#16 0x00007fffc00aa3c8 in ()
#17 0x0003000000000001 in ()
#18 0x0000000000000000 in ()

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

This doesn't affect normal builds because boringssl is statically linked and its symbols aren't public.

Changed in oxide:
importance: Undecided → Critical
status: New → Triaged
Changed in oxide:
importance: Critical → High
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.