64 Commits

Author SHA1 Message Date
Gioacchino Mazzurco
16ca0dc52c
RsThread fix warning and cleanup
Avoid compiler warning due to virtual method being called in destructor
  at this point the empty default version would be called without damage
  but making the compiler concernig about the semantic being different
  from the one the programmer meant.
Delete old superseeded function and do not depend on it on RsThread.
2021-11-04 19:17:57 +01:00
Phenom
5e9bc9c2b8 Fix RsThread when nothing to do and run finish before start. 2021-11-03 17:14:11 +01:00
Phenom
3d9ba341f0 Fix Windows 64b G++ under MSys2 compil. 2021-03-05 17:40:06 +01:00
Phenom
2ff3d83c30 Fix RsMutex Debug and add rs_mutex_debug qmake option. 2020-12-08 17:15:16 +01:00
Phenom
c0ce5c7088 Fix SIGSEGV on RsThread::start
mTid could be null while pError is null too.

This happens to me always with "gxs integrity".
2020-04-19 11:24:57 +02:00
Gioacchino Mazzurco
039e8f653d
Solve race condition in JSON API restart
Improve atomic access to restbed service
Protect JSON API restart against bursts
Fix JSON API error condition enum registration
Provide ostream helper for error_condition
Provide optional forced thread cancel for debugging purpose, disabled by
  default at compile time define RS_THREAD_FORCE_STOP to enable it
Avoid double fullstop in retroshare-gui json api apply button
2020-02-05 18:56:47 +01:00
Gioacchino Mazzurco
f12ec2b535
JSON API service and RsThread fixups 2020-01-08 14:24:46 +01:00
Gioacchino Mazzurco
f4f7b8a1ea
Few fixes after rebase 2020-01-06 14:46:36 +01:00
Gioacchino Mazzurco
df87fe53b1
Cleanup RsThread and related classes
Removed antipattern abstraction RsSingleJobThread
Rename runloop() method to run() in RsThread
Ported few classes ineriting from RsSingleJobThread to RsThread
RsThread use std::atomic instead of self implemented strange binary semaphores
Removed RsTickingThread::shutdown() use RsThread::askForStop() instead
Removed RsTickingThread::fullstop() use RsThread::fullstop() instead
Stop properly JSON API server in retroshare-gui
Centralize errno traslation to literal in util/rserrno.*
2019-12-30 10:38:54 +01:00
csoler
6419b03a2a
merged upstream/master 2019-09-08 20:35:23 +02:00
csoler
7d9db1fc22
added destructor in RsTickingThread calling for fullstop, which prevents the crash due to threads being killed when still running 2019-08-30 21:44:05 +02:00
csoler
56e591f728
added a flag in peerState specific to short invites, and several checks for consistency 2019-05-22 21:46:11 +02:00
csoler
2748275397
changed std::cerr to the new RsErr() method 2019-05-12 11:00:33 +02:00
csoler
1cee069243
added warning when deleting a thread that isnot finished 2019-05-12 10:46:08 +02:00
csoler
7b2541e35c
fixed thread bug caused by deleting a thread before it is actually terminated 2019-05-11 23:43:54 +02:00
zapek
3f8611f40f the cache is corrected and saved 2019-04-06 00:15:01 +02:00
Gioacchino Mazzurco
329050a9c2
Use safer rstime_t instead of time_t
Avoid problems to serialization on different platforms, without breaking
nested STL containers serialization.

The conversion have been made with sed, and checked with grep, plus
kdiff3 visual ispection, plus rutime tests, so it should be fine.
2018-10-07 13:07:06 +02:00
csoler
8641da189c
relicensed util/ and moved rsaes to crypto/ 2018-05-30 21:34:38 +02:00
Gioacchino Mazzurco
4a138e07b9
Implement IPv6 listening
With this commit IPv6-v3 surpass v0.6-IPv6-2 in term of features
  obsoleting it.
p3BitDht handle gracefully unwanted non IPv4 addresses
rsUdpStack handle gracefully unwanted non IPv4 addresses
pqissludp handle gracefully unwanted non IPv4 addresses
Move single address limitation workaround from
  p3discovery2::sendOwnContactInfo to better
  place p3PeerMgrIMPL::UpdateOwnAddress this way local address list is
  queried less often and only id there is some suggestion that it may
  have changed (probably ir will not be called all the times there is a
  changes in local network interfaces but is good enough)
Implement crossplatform rs_setsockopt to avoid too much ifdef around
Implement sockaddr_storage_copy to safely copy sockaddr_storage objects
2018-02-24 17:14:49 +01:00
csoler
d0039241d3 replaced usleep() by rstime::rs_usleep() which accepts times >= 1 sec. Should fix problems on windows 2018-01-27 20:22:31 +01:00
csoler
79825eb2e2 fixed thread issue in RsGxsCleanupThread that caused random crashes 2017-06-12 20:36:02 +02:00
csoler
a7eb167f96 fixed a bug in RsThread which made finished threads unaware of their state 2017-05-30 20:57:20 +02:00
cyril soler
461975f115 generally prevent threads to start twice, and fixed bug causing DirWatcher to be run twice 2016-11-07 10:09:28 +01:00
Phenom
2db8dbd45f Fix El Capitan OSX 10.11 Compil 2016-11-02 21:40:46 +01:00
csoler
4c986cdc3e attempt to fix the pthread_setname_np symbol issue. To be tested 2016-06-03 19:04:52 +02:00
Phenom
832fb78a2a Fix Compilation with unknown pthread_getname_np if not __USE_GNU defined 2016-06-01 22:00:44 +02:00
sehraf
b3fece25da introduce thread naming 2016-06-01 15:07:41 +02:00
Cyril Soler
1d476de806 fixed initialisation of semaphores in created thread object 2016-05-12 10:26:38 -04:00
csoler
96012ef81f new attempt to fix thread issues 2016-05-11 22:18:02 -04:00
Cyril Soler
383e40324d tried to improve the RsSemaphore class to avoid and display more info about the deadlock problem 2016-05-11 12:42:59 -04:00
csoler
67e976057d removed debug output from threads 2016-05-05 22:03:46 -04:00
csoler
9847a7a45f implemented a new semaphore class that should be cross plateform 2016-05-05 20:52:10 -04:00
csoler
0817aad0f9 improved debugging output of rsthreads.cc (part 3) 2016-05-04 22:51:33 -04:00
csoler
bb00e39972 improved debugging output of rsthreads.cc (part 2) 2016-05-04 22:34:03 -04:00
csoler
2e02a89874 improved debugging output of rsthreads.cc 2016-05-04 22:23:36 -04:00
thunder2
502d2353cb Fixed usage of member _thread_id in RsMutex
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8610 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-07-13 09:52:45 +00:00
csoler
f835823de3 moved the stop order up to RsThread to ease the test for stopping order in single job threads
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8290 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-25 15:11:42 +00:00
csoler
e9b9dce9f5 created 2 subclasses of RsThread, one for ticking services, and one for single shot jobs. Now all threads use the same base code.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8288 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-22 20:54:38 +00:00
csoler
f2d4a237ca moved semaphore based thread logic up to RsThread. This should help terminating service threads properly and possibly remove the SIGSEGV when quitting
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8287 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-22 18:16:49 +00:00
electron128
48ad51d040 fixed start of RsThreads
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8271 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2015-05-18 08:51:23 +00:00
csoler
c8b3d4e527 improved RsServer so that join() is called on every running thread at shutdown, hence avoiding SIGSEGV. Removed some unused members of RsServer
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7776 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-12-21 20:52:34 +00:00
csoler
db4b87cd01 Mutex debugging: added a new macro RS_STACK_MUTEX(myMutex) to trigger a scope guard while recording file location and line number. Moved the timings from RsMutex to RsStackMutex. Changed the mutexes in rsgenexchange and rsgxsntservice to use the new macro.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7672 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-11-11 19:47:05 +00:00
csoler
7fca2836d6 improved mutex lock debugging
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7662 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-11-05 20:07:15 +00:00
csoler
eefac5e4df added more time measurements in RsMutex, so as to measure locking time and waiting time. Only enabled with RSMUTEX_DEBUG
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7646 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-10-28 20:37:48 +00:00
csoler
880efee332 removed ifdef for the different sleep methods. Now only usleep is used, on all systems. Patch from Phenom
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7629 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2014-10-24 21:31:58 +00:00
thunder2
31fd6f6261 Code maintenance for Qt 5:
- Fixed compile with MinGW-w64 under Windows


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6866 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-10-21 21:42:15 +00:00
thunder2
9095e9bd75 Code maintenance for Qt 5:
- Added some more includes needed by MinGW-w64

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6860 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-10-21 11:00:49 +00:00
drbob
60087f0ef9 Added return value checking of mutex_lock() function.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6656 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-08-31 08:16:09 +00:00
thunder2
de87a89437 Added a name to the RsMutex class.
You can enable the debugging of the waiting time for a lock of RsMutex in rsthreads.h with
#define RSMUTEX_DEBUG 300
That means all locks waiting longer than 300ms are logged into the stderr.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4392 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-07-04 22:59:39 +00:00
csoler
6edee55e57 added error message when thread creation fails
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4112 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-03-30 22:32:13 +00:00