In article <56e2edd9.7020...@sky.com>, Lee Noar <leen...@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