Go to file
Nicky 6f359f1bb7 Replace boost::fibers::unbuffered_channel with boost::fibers::buffered_channel.
Using boost::fibers::unbuffered_channel can block the mainthread when calling mPendingCoprocs.push (LLCoprocedurePool::enqueueCoprocedure)
From the documentation:
- If a fiber attempts to send a value through an unbuffered channel and no fiber is waiting to receive the value, the channel will block the sending fiber.

This can happen if LLCoprocedurePool::coprocedureInvokerCoro is running a coroutine and this coroutine calls yield, resuming the viewers main loop. If inside
the main loop someone calls LLCoprocedurePool::enqueueCoprocedure now push will block, as there's no one waiting for a result right now.
The wait would be in LLCoprocedurePool::coprocedureInvokerCoro at the start of the while loop, but we have not reached that yet again as LLCoprocedurePool::coprocedureInvokerCoro
did yield before reaching pop_wait_for.
The result is a deadlock.

boost::fibers::buffered_channel will not block as long as there's space in the channel. A size of 4096 (DEFAULT_QUEUE_SIZE) should be plenty enough for this.
2019-06-07 11:11:56 +02:00
debian
…
doc SL-10891 Reset UI scale factor on first run if OS's display scaling is not 100% 2019-04-11 00:19:58 +03:00
etc SL-694 - stub support for ObjectAnimation message type 2017-05-30 22:03:43 +01:00
indra Replace boost::fibers::unbuffered_channel with boost::fibers::buffered_channel. 2019-06-07 11:11:56 +02:00
scripts merge 2018-09-27 19:54:10 +01:00
.hgignore DRTVWR-418: Don't report anything in new build-vc120-{32,64}. 2016-11-23 12:06:31 -05:00
.hgtags Added tag 6.2.2-release for changeset ec09daf1899c 2019-05-21 08:57:32 -04:00
BuildParams remove duplicated EDU definitions 2018-09-05 09:12:21 -04:00
README.md dummy checkin to build an upgrade target 2017-05-17 18:10:43 -07:00
autobuild.xml [DRTVWR-476] - update cef, fix merge 2019-06-06 01:51:38 -07:00
build.sh Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2019-06-05 14:15:15 -04:00

README.md

Second Life Viewer

This project manages the source code for the Second Life Viewer.

This source is available as open source; for details on licensing, see the licensing page on the Second Life wiki

For information on how to use and contribute to this, see the open source portal on the wiki.

To download the current default version, visit the download page. For even newer versions try the Alternate Viewers page