Comments (3)
uWS
is single-threaded, and uses thread_local variables. So while it can be used in a multi-threaded environment, you have to be careful when crossing thread boundaries. I don't recall whether defer()
can be used safely across-threads. But given you crash, maybe not? FWIW.
from uwebsockets.
I was using the defer()
function so far for exactly this reason and it worked. For some reason now it sometimes crashes.
The defer function uses the loop's thread, and this is why I'm using it.
My software is multithreaded and I think there's maybe a bug here.
Reference from this repo:
/* Defer this callback on Loop's thread of execution */
void defer(MoveOnlyFunction<void()> &&cb) {
LoopData *loopData = (LoopData *) us_loop_ext((us_loop_t *) this);
//if (std::thread::get_id() == ) // todo: add fast path for same thread id
loopData->deferMutex.lock();
loopData->deferQueues[loopData->currentDeferQueue].emplace_back(std::move(cb));
loopData->deferMutex.unlock();
us_wakeup_loop((us_loop_t *) this);
}
from uwebsockets.
defer is thread safe. But you need to check your composition with ThreadSanitizer or AddressSanitizer. The stacktrace is very weird and most likely not showing the real problem
from uwebsockets.
Related Issues (20)
- dear sir, a stupid question, how to compile on linux(debian/ ubuntu)? HOT 4
- How do I set up development environment HOT 1
- Program crash when `publish` was called too many times in a short time in websocket server HOT 5
- Kernel load balancing HOT 1
- C++ 20 Module support HOT 2
- benchmark HOT 1
- UB in sending long messages HOT 5
- A crash occurred when the client closed the connection HOT 3
- Pressure test HOT 1
- Random crashes HOT 9
- Specify QoS for MQTT syntax HOT 1
- Unable to fail a request without triggering a CORS error HOT 5
- CLOSE_WAIT question HOT 8
- Segmentation fault when returning SSL_CTX of the app HOT 4
- Use AddressSanitizer before posting crash issues
- is it support client in 2024?
- getenv is deprecated HOT 1
- clang-tidy: error: Use of memory after it is freed [clang-analyzer-cplusplus.NewDelete,-warnings-as-errors] HOT 5
- µWebSockets.js => ~30.000 ; µWebSockets => ~1.015 ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uwebsockets.