Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault with Alpine 3.4 & QT5. #4

Open
bostontrader opened this issue Jan 15, 2019 · 4 comments
Open

Segfault with Alpine 3.4 & QT5. #4

bostontrader opened this issue Jan 15, 2019 · 4 comments

Comments

@bostontrader
Copy link

Hello Folks

I'm building this (commit fa9299) with Alpine 3.4 & QT5. It builds just fine and I can execute ixcoind. However, when I try to run ixcoin-qt I get a segfault. If I crank this up with gdb I can see that any attempt to step over or into src/qt/bitcoin.cpp:672 causes the segfault.

GDB is gracious enough to give me the following backtrace:

#0 0x0000555555cc69c8 in secp256k1_ecmult_gen_context_build (ctx=ctx@entry=0x55555685d888, cb=cb@entry=0x55555685d940) at src/ecmult_gen_impl.h:21
#1 0x0000555555cc7323 in secp256k1_context_create (flags=513) at src/secp256k1.c:74
#2 0x0000555555bfbeda in ECC_Start() () at key.cpp:306
#3 0x00005555557c0060 in AppInit2(boost::thread_group&, CScheduler&) (threadGroup=..., scheduler=...) at init.cpp:1032
#4 0x00005555555bb468 in BitcoinCore::initialize() (this=0x555556856820) at qt/bitcoin.cpp:270
#5 0x00005555555ba896 in BitcoinCore::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x555556856820, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x555556856ae0) at qt/bitcoin.moc:90
#6 0x00007ffff59b1589 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#7 0x00007ffff6988f39 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#8 0x00007ffff698dfb0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#9 0x00007ffff5984070 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#10 0x00007ffff5985fec in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#11 0x00007ffff59da7b3 in () at /usr/lib/libQt5Core.so.5
#12 0x00007ffff3680b96 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#13 0x00007ffff3680e16 in () at /usr/lib/libglib-2.0.so.0
#14 0x00007ffff3680ec4 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#15 0x00007ffff59dabff in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () at /usr/lib/libQt5Core.so.5
#16 0x00007ffff5981cba in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () at /usr/lib/libQt5Core.so.5
#17 0x00007ffff57a3693 in QThread::exec() () at /usr/lib/libQt5Core.so.5
#18 0x00007ffff57a8833 in () at /usr/lib/libQt5Core.so.5
#19 0x00007ffff7dc39e9 in () at /lib/ld-musl-x86_64.so.1
#20 0x0000000000000000 in ()

No seqfault

It went BOING and vomited on my shoes.

Ever time's a winner for me.

The program doesn't execute far enough to actually start debug.log :-(

I will continue to grind away at this on my own, but was hoping somebody had some easy insight they'd be willing to throw my way. Any clues greatly appreciated. Thanks.

@ArchimedesIX
Copy link
Contributor

ArchimedesIX commented Jan 15, 2019 via email

@bostontrader
Copy link
Author

@ArchimedesIX ,
I'm on the master branch. I've traced this into src/secp256k1/src/ecmult_gen_impl.h. I still don't understand what's happening, but I'm getting closer. One possible wrinkle is that GDB is telling me that some things are "optimized out". I used the --enable-debug flag with configure but I guess that's not doing what I hoped.

Notice that I'm also on commit fa9299. In subsequent commits you changed some syntax with #include statements and that's not building for me. I'd like to discuss that next, but I figure a 2nd issue would be a better place to discuss.

I'll let you know what I find.

@bostontrader
Copy link
Author

@ArchimedesIX ,
secp256k1 in my build passes its tests, even if it segfaults when I try to execute the ixcoin-qt.

I haven't found an obvious cause of the problem, even though I think it's happening in src/secp256k1/src/ecmult_gen_impl.h. I think because I have a hunch this might be a non-deterministic memory allocation/stack-overflow kind of thing because of litecoin-project/litecoin#407.

I'm also having a lot of grief with compiler optimization vs. debug, even when I build with -O0. Many things, such as for-loop indices, are getting "optimized out".

And even if I finally corner this thing, it's skulkin' in the deepest darkest bowels of sep256k1, so I'd then have the enviable task of figuring out why and how this code works. So, in consideration of work-arounds vs opportunity cost ...

Perhaps I shall leave this as one of life's mysteries and adopt a work-around instead. I've discovered that I can simply graft in the secp256k1 code from a recent commit of the definitive source at https://github.com/bitcoin-core/secp256k1 and then it builds and excutes just great.

@vladroberto
Copy link

Drop the seqwit written core on it, seqwit should replicate a new binary core, the best way to cover the fundamentals is to close source in the fork and temperature systems only offer basic commons, the GUI needs a fix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants