[gccsdk] UnixLib and ARMv8

Chris Gransden chrisg at care4free.net
Sat Mar 12 03:53:06 PST 2016


In article <56E2EDD9.7020802 at sky.com>,
   Lee Noar <leenoar at sky.com> wrote:
> On 05/03/16 17:23, Theo Markettos wrote:
> > On Sat, Mar 05, 2016 at 04:06:12PM +0100, John Tytgat wrote:
> >> On 03/01/2016 07:26 PM, Theo Markettos wrote:
> >>> [...]
> >>> I can do some implementation and testing, if this is deemed to be
> >>> a good idea. ('testing' in a loose sense - provoking concurrency
> >>> conditions being somewhat hard)
> >>
> >> FYI, UnixLib has some testing code in its 'test' subdirectory (incl.
> >> pthread).  It might be useful to verify nothing gets obviously
> >> broken.
> >
> > Useful to know.

> > I'll let Lee take the lead since he probably knows more than I about the
> > internals, but let me know if you need help.

> I've just committed some changes that determine whether to use SWP
> or LDREX/STREX at runtime using the info that Ben posted as a guide.
> Perhaps if you have a RPi3, you could see if Otter works?

> I think the pthread testing code may need some work to bring it up
> to date, plus all the tests need to be built with the -static flag, but
> that's proving difficult to achieve.

QupZilla and Otter browser seem to run ok at first but then crash with the
same stack trace. Sometimes straight away or after a couple of minutes use.
MPlayer also crashes in a silimar way but there is no stack trace. Command
line programs run OK. Also ArcEm and !Nettle run OK too.

Here's the stack trace from Otter browser,

Fatal signal received: Aborted

Stack backtrace:

Running thread 0x9a28a0 (Qt bearer thread)
  (  f06b5c) pc: 4ba7d980 lr: 4ba7dd9c sp:   f06b60  __write_backtrace()
  (  f06bc8) pc: 4ba7dad0 lr: 4ba7e2e4 sp:   f06bcc 
__unixlib_raise_signal()
  (  f06bd8) pc: 4ba7e2bc lr: 4ba8a468 sp:   f06bdc  raise()
  (  f06bec) pc: 4ba8a41c lr: 4ba5e7f4 sp:   f06bf0  abort()
  (  f06c04) pc: 4ba5e7bc lr: 4ba60fa4 sp:   f06c08 
__pthread_fatal_error()
  (  f06c14) pc: 4ba60f74 lr: 4baa2800 sp:   f06c18  pthread_yield()

  Register dump at 00f06c18:

    a1:   9ab050 a2:   9ab13c a3:   9ab228 a4:   f06dec
    v1:   f06c38 v2: 4682e548 v3: 4682e578 v4:        0
    v5:        7 v6:   6123e8 sl:        0 fp:        0
    ip:        0 sp:        0 lr:        0 pc:        0
    cpsr:        0

  [Disassembly not available]

  (  f06db4) pc: 4baa2420 lr: 4baa15c0 sp:   f06db8  select()
  (  f06dec) pc: 4baa1550 lr: 4a4f5648 sp:   f06df0  pselect()
  (  f06e38) pc: 4a4f55b4 lr: 4a4f5b88 sp:   f06e3c  qt_safe_select(int,
__fd_set*, __fd_set*, __fd_set*, timespec const*)
  (  f06e4c) pc: 4a4f5b60 lr: 4a4f7258 sp:   f06e50 
QEventDispatcherUNIX::select(int, __fd_set*, __fd_set*, __fd_set*,
timespec*)
  (  f06ed8) pc: 4a4f7168 lr: 4a4f777c sp:   f06edc 
QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timespec*)
  (  f06f08) pc: 4a4f7648 lr: 4a489674 sp:   f06f0c 
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
  (  f06f1c) pc: 4a489640 lr: 4a489c78 sp:   f06f20 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
  (  f06f64) pc: 4a489b70 lr: 4a25d67c sp:   f06f68 
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
  (  f06f88) pc: 4a25d5cc lr: 4a25d748 sp:   f06f8c  QThread::exec()
  (  f06f98) pc: 4a25d73c lr: 4a26308c sp:   f06f9c  QThread::run()
  (  f06fd4) pc: 4a262f24 lr: 4ba5e504 sp:   f06fd8 
QThreadPrivate::start(void*)
  (  f06fe4) pc: 4ba5e4ec lr:   99f100 sp:   f06fe8  __pthread_create()


Thread 0x9b1950 (JavaScriptCore::BlockFree)
  (  f06b3c) pc: 4ba6100c lr: 4ba5dfd4 sp:   f04ec4 
__pthread_yield_return()
  (  f04ed0) pc: 4ba60f74 lr: 4ba5dfd4 sp:   f04ed4  pthread_yield()
  (  f04ef8) pc: 4ba5deb8 lr: 483e48d0 sp:   f04efc 
pthread_cond_timedwait()
  (  f04f20) pc: 483e4828 lr: 48153494 sp:   f04f24 
WTF::ThreadCondition::timedWait(WTF::Mutex&, double)
  (  f04f40) pc: 48153448 lr: 48153508 sp:   f04f44 
JSC::BlockAllocator::waitForRelativeTimeWhileHoldingLock(double)
  (  f04f60) pc: 481534d8 lr: 4815358c sp:   f04f64 
JSC::BlockAllocator::waitForRelativeTime(double)
  (  f04f84) pc: 48153558 lr: 4815374c sp:   f04f88 
JSC::BlockAllocator::blockFreeingThreadMain()
  (  f04f94) pc: 48153740 lr: 483cb76c sp:   f04f98 
JSC::BlockAllocator::blockFreeingThreadStartFunc(void*)
  (  f04fb0) pc: 483cb724 lr: 483e40b8 sp:   f04fb4 
WTF::threadEntryPoint(void*)
  (  f04fc4) pc: 483e4098 lr: 4ba5e504 sp:   f04fc8 
WTF::wtfThreadEntryPoint(void*)
  (  f04fd4) pc: 4ba5e4ec lr:       60 sp:   f04fd8  __pthread_create()


Thread 0x61d248 (Main Thread)
  (  f06b3c) pc: 4ba6100c lr: 4a48967c sp:  1006d00 
__pthread_yield_return()
  ( 1006d0c) pc: 4ba60f74 lr: 4a48967c sp:  1006d10  pthread_yield()
  ( 1006d20) pc: 4a489640 lr: 4a489c78 sp:  1006d24 
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
  ( 1006d68) pc: 4a489b70 lr: 4b1a56a0 sp:  1006d6c 
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
  ( 1006db4) pc: 4b1a5420 lr:    4593c sp:  1006db8  QDialog::exec()
  ( 1006fec) pc:    45398 lr: 4ba94844 sp:  1006ff0  main()

Chris.





More information about the gcc mailing list