Remember me

Lost Password?

Register now!


Who's Online
58 user(s) are online (34 user(s) are browsing Forums)

Members: 1
Guests: 57

beworld, more...


Report message:*

Re: MineCraft (MineTest) work in progress help need it

Subject: Re: MineCraft (MineTest) work in progress help need it
by kas1e on 2021/1/5 17:53:57


std::thread::join (for example) can also throw std::system_error, and join is called without try-catch block:

https://github.com/minetest/minetest/b ... threading/thread.cpp#L151

You could try to surround the "join" call with before/after logs, or just add the try-catch.

Added printfs around "join" in Thread::wait as you say, and there is output:


=============Testing module TestThreading
log 1
terminate called after throwing an instance of 'std::system_error'
what(): Device or resource busy
before join
<newlib.library error about exit() from wrong process using IEXEC->RemTask(NULL)>

And I never see "after join" printf, output just stops
So .. in the end, it join() fail?


EDIT: EBUSY might trigger from the GCC thread patch. In try_lock, is there also an increment missing on successful attempt:

https://github.com/sba1/adtools/blob/m ... s-thread-model.patch#L732

You mean mx->u.i.acquired++; ? Can't say (suck at such low-level things), but have an idea how to test? I can easily re-build my GCC with any change.

Powered by XOOPS 2.0 © 2001-2016 The XOOPS Project