Blockstream / green_qt

Blockstream Green App
GNU General Public License v3.0
203 stars 32 forks source link

Green on Linux: crashes before being able to enter password Jade #95

Closed eckelj closed 3 months ago

eckelj commented 10 months ago

Description

I have a Jade wallet set up with a pin and a passphrase. I use Linux ubuntu

Version

Jade Version: 1.0.26 Green Version: 1.2.8.

Steps to reproduce

  1. connect jade to computer
  2. open green
  3. click unlock jade
  4. enter pin
  5. press -> green crashes now and the jade shows a connection error.

Calling green from the cli with parameters results in: [1] 193909 IOT instruction (core dumped) ./green --debug --printtoconsole --debugjade but not more information.

Expected behaviour

I expect to get asked for the passphrase.

Actual behaviour

crash!

Screenshots

Device or machine

Computer: Distributor ID: Ubuntu Description: Ubuntu 23.04 Release: 23.04 Codename: lunar

Jade Version: 1.0.26

Additional info

borgbyte commented 7 months ago

@eckelj can you try latest release?

eckelj commented 6 months ago

@borgbyte Yes, I did so. got the same user experience. btw. I get the following error on the cli

➜ Downloads ./green --debug [1] 655603 IOT instruction (core dumped) ./green --debug

borgbyte commented 6 months ago

@eckelj can you run with gdb?

gdb green
r
bt
eckelj commented 6 months ago

@borgbyte Here you go:

Thread 1 "green" received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
Download failed: Invalid argument.  Continuing without source file ./nptl/./nptl/pthread_kill.c.                                                                             
44  ./nptl/pthread_kill.c: No such file or directory.
(gdb) gdb green
Undefined command: "gdb".  Try "help".
(gdb) gdb green
Undefined command: "gdb".  Try "help".
(gdb) bt
#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007ffff70428e6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007ffff70268b7 in __GI_abort () at ./stdlib/abort.c:79
#5  0x0000555555ac5c3b in gMessageHandler (type=QtFatalMsg, context=..., msg=...) at /builds/blockstream/green/green_qt/src/main.cpp:93
#6  0x0000555555c28f8b in qt_message(QtMsgType, QMessageLogContext const&, char const*, __va_list_tag*) ()
#7  0x0000555555895503 in QMessageLogger::fatal(char const*, ...) const ()
#8  0x00005555558951bf in qt_assert(char const*, char const*, int) ()
#9  0x0000555555b7192a in JadeAPI::handleHttpResponse (this=0x55555c70bf90, id=49972, httpRequest=..., httpResponse=...)
    at /builds/blockstream/green/green_qt/src/jade/jadeapi.cpp:116
#10 0x0000555555b6d275 in <lambda(JadeAPI&, int, const QJsonObject&)>::operator()(JadeAPI &, int, const QJsonObject &) const
    (__closure=0x55555d052ad0, jade=..., id=49972, req=...) at /builds/blockstream/green/green_qt/src/jade/jadelogincontroller.cpp:268
#11 0x0000555555b6f3b0 in std::_Function_handler<void(JadeAPI&, int, const QJsonObject&), JadeUnlockTask::update()::<lambda(JadeAPI&, int, const QJsonObject&)> >::_M_invoke(const std::_Any_data &, JadeAPI &, int &&, const QJsonObject &) (__functor=..., __args#0=..., __args#1=@0x7fffffffcc9c: 49972, __args#2=...)
    at /usr/include/c++/9/bits/std_function.h:300
#12 0x0000555555b7abb5 in std::function<void (JadeAPI&, int, QJsonObject const&)>::operator()(JadeAPI&, int, QJsonObject const&) const
    (this=0x7fff6008fc08, __args#0=..., __args#1=49972, __args#2=...) at /usr/include/c++/9/bits/std_function.h:688
#13 0x0000555555b72d16 in JadeAPI::processResponseMessage (this=0x55555c70bf90, msg=...) at /builds/blockstream/green/green_qt/src/jade/jadeapi.cpp:233
#14 0x0000555555b82852 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QCborMap const&>, void, void (JadeAPI::*)(QCborMap const&)>::call
    (f=(void (JadeAPI::*)(class JadeAPI * const, const class QCborMap &)) 0x555555b72610 <JadeAPI::processResponseMessage(QCborMap const&)>, o=0x55555c70bf90, arg=0x7fffffffcfb0) at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:137
#15 0x0000555555b80434 in QtPrivate::FunctionPointer<void (JadeAPI::*)(QCborMap const&)>::call<QtPrivate::List<QCborMap const&>, void>
    (f=(void (JadeAPI::*)(class JadeAPI * const, const class QCborMap &)) 0x555555b72610 <JadeAPI::processResponseMessage(QCborMap const&)>, o=0x55555c70bf90, arg=0x7fffffffcfb0) at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:174
#16 0x0000555555b7d809 in QtPrivate::QSlotObject<void (JadeAPI::*)(QCborMap const&), QtPrivate::List<QCborMap const&>, void>::impl
--Type <RET> for more, q to quit, c to continue without paging--
    (which=1, this_=0x55555c6a0a40, r=0x55555c70bf90, a=0x7fffffffcfb0, ret=0x0) at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:432
#17 0x0000555555cb2bd2 in void doActivate<false>(QObject*, int, void**) ()
#18 0x00005555559d2304 in JadeConnection::onNewMessageReceived (this=0x7fff600427b0, _t1=...) at /builds/blockstream/green/green_qt/green_autogen/IPYQSMD2GY/moc_jadeconnection.cpp:213
#19 0x0000555555b49384 in JadeConnection::onDataReceived (this=0x7fff600427b0, data=...) at /builds/blockstream/green/green_qt/src/jade/jadeconnection.cpp:71
#20 0x0000555555b4a068 in JadeSerialImpl::onSerialDataReady (this=0x7fff600427b0) at /builds/blockstream/green/green_qt/src/jade/jadeserialimpl.cpp:122
#21 0x0000555555b4a56b in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (JadeSerialImpl::*)()>::call(void (JadeSerialImpl::*)(), JadeSerialImpl*, void**) (f=(void (JadeSerialImpl::*)(class JadeSerialImpl * const)) 0x555555b49ffa <JadeSerialImpl::onSerialDataReady()>, o=0x7fff600427b0, arg=0x7fffffffd2a8)
    at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:137
#22 0x0000555555b4a457 in QtPrivate::FunctionPointer<void (JadeSerialImpl::*)()>::call<QtPrivate::List<>, void>(void (JadeSerialImpl::*)(), JadeSerialImpl*, void**)
    (f=(void (JadeSerialImpl::*)(class JadeSerialImpl * const)) 0x555555b49ffa <JadeSerialImpl::onSerialDataReady()>, o=0x7fff600427b0, arg=0x7fffffffd2a8)
    at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:174
#23 0x0000555555b4a383 in QtPrivate::QSlotObject<void (JadeSerialImpl::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
    (which=1, this_=0x55555c70cbd0, r=0x7fff600427b0, a=0x7fffffffd2a8, ret=0x0) at /depends/linux-x86_64/include/QtCore/qobjectdefs_impl.h:432
#24 0x0000555555cb2bd2 in void doActivate<false>(QObject*, int, void**) ()
#25 0x000055555719f4c5 in QSerialPortPrivate::readNotification() ()
#26 0x00005555571a38dd in ReadNotifier::event(QEvent*) ()
#27 0x0000555556e0f5c2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
#28 0x0000555556e1fd10 in QApplication::notify(QObject*, QEvent*) ()
#29 0x0000555555c733f8 in QCoreApplication::sendEvent(QObject*, QEvent*) ()
#30 0x0000555555e52e24 in socketNotifierSourceDispatch(_GSource*, int (*)(void*), void*) ()
#31 0x00007ffff7a53b2c in g_main_dispatch (context=0x7ffff0000ef0) at ../../../glib/gmain.c:3476
#32 0x00007ffff7aaf46f in g_main_context_dispatch_unlocked (context=0x7ffff0000ef0) at ../../../glib/gmain.c:4284
#33 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7ffff0000ef0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4349
#34 0x00007ffff7a51d20 in g_main_context_iteration (context=0x7ffff0000ef0, may_block=1) at ../../../glib/gmain.c:4414
#35 0x0000555555e51bb4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#36 0x0000555555c7d8ee in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
#37 0x0000555555c7be26 in QCoreApplication::exec() ()
#38 0x0000555555ac9b2d in main (argc=1, argv=0x7fffffffdca8) at /builds/blockstream/green/green_qt/src/main.cpp:372
borgbyte commented 6 months ago

@eckelj do you have tor enabled? or any non-default network setting?

eckelj commented 6 months ago

No, I don't use Tor in this case. I just started the app with ./green and had the defaults configured.

borgbyte commented 6 months ago

@eckelj would be nice to see the value of httpRequest on frame 9. Can you repeat the debug session and after bt do:

f 9
p httpRequest
borgbyte commented 4 months ago

@eckelj ping, please try latest release 2.0.6.

eckelj commented 3 months ago

Perfect! it's working now! thank you so much!