Saturday, 12 March 2016

Re: [gccsdk] UnixLib and ARMv8

In article <56E2EDD9.7020802@sky.com>,
Lee Noar <leenoar@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.


_______________________________________________
GCCSDK mailing list gcc@gccsdk.riscos.info
Bugzilla: http://www.riscos.info/bugzilla/index.cgi
List Info: http://www.riscos.info/mailman/listinfo/gcc
Main Page: http://www.riscos.info/index.php/GCCSDK

No comments:

Post a Comment