Current main spinloops on macOS
BlackHoleFox opened this issue · comments
Problem
While running a very basic hello world app, the Blitz-driven binary spinloops at 100% CPU usage despite nothing going on. From what I can tell, it appears to be a main loop scheduling problem thats resulting in the system making an excessive number of callbacks into Tao/Blitz.
Steps To Reproduce
Steps to reproduce the behavior:
- Create a basic application with the following source:
#![allow(non_snake_case)]
use dioxus::prelude::*;
fn main() {
let rt = tokio::runtime::Builder::new_multi_thread()
.enable_io()
.enable_time()
.build()
.unwrap();
println!("launching app");
rt.block_on(blitz::launch(App));
}
fn App(cx: Scope) -> Element {
cx.render(rsx! {
div {
"Hello, world!"
}
})
}
[dependencies]
# Waiting on https://github.com/DioxusLabs/blitz/pull/38/ to merge, so you may need to use a local copy
blitz = { git = "https://github.com/DioxusLabs/blitz.git" }
dioxus = { git = "https://github.com/DioxusLabs/dioxus/" }
tokio = { version = "1.28.0", features = ["full"] }
- Launch the app with
cargo run
.
Expected behavior
The app would remain at 0% CPU usage when not rendering anything or being interacted with.
Screenshots
Here are some screenshots from profiling with Instruments.app
, which show the excessive calls being made. The numbers go up extremely quick while running (my sample was taken over 30s).
![image](https://private-user-images.githubusercontent.com/20936452/247448428-242778d0-b89a-481d-9ccc-354d6f652d48.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExNTUyMDMsIm5iZiI6MTcyMTE1NDkwMywicGF0aCI6Ii8yMDkzNjQ1Mi8yNDc0NDg0MjgtMjQyNzc4ZDAtYjg5YS00ODFkLTljY2MtMzU0ZDZmNjUyZDQ4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE2VDE4MzUwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRkZjFlYzkxYjlhNTViZTlmMGY0YWZiZTkzODVlNzQ0ZDNlMDA2N2Y0Y2Q3NWFiYmMyNzZjNDFmNWYwNmZiOTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.bBQjAOMzLG5wE0AXdxtsS_l7PsXRsKGraS2NG451TiE)
![image](https://private-user-images.githubusercontent.com/20936452/247448634-c5c701f3-3df3-45f9-a0a9-3d37cbd06902.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExNTUyMDMsIm5iZiI6MTcyMTE1NDkwMywicGF0aCI6Ii8yMDkzNjQ1Mi8yNDc0NDg2MzQtYzVjNzAxZjMtM2RmMy00NWY5LWEwYTktM2QzN2NiZDA2OTAyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE2VDE4MzUwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgzZGFlNWE1NjMzZGY4NDcyN2YyNzdmMzE0YmVlMmQ0ZDY2YmU0ODZhNjYwZjY0YmEyYWVmZWYyZDI3ZjQ1ZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.y4PLZElPikLKhMdMEPWXk1V8mz6vKONQtZdW_udkFt4)
![image](https://private-user-images.githubusercontent.com/20936452/247448693-d6df8753-fcf8-4b91-93d6-ae776df1ac2b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExNTUyMDMsIm5iZiI6MTcyMTE1NDkwMywicGF0aCI6Ii8yMDkzNjQ1Mi8yNDc0NDg2OTMtZDZkZjg3NTMtZmNmOC00YjkxLTkzZDYtYWU3NzZkZjFhYzJiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE2VDE4MzUwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE5ZWY3NjE0MTEwMTIyN2ZmYTIxM2I0ZDY1NmY0MGVlMGM2ZDVjZjQxNDAwM2IzMjg3ZTZlN2VhMGRjODFlOTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Z_jqDgyoAsHgMB59nu4lwGLpvB_3itPTR5GtLqKQ8Bw)
Environment:
- Renderer version:
Dioxus master
- Rust version:
rustc 1.70.0 (90c541806 2023-05-31)
- OS info: macOS 13
Questionnaire
- I don't have time to fix this right now, but maybe later (Sorry, I was just trying out the new renderer for now)
Closing as I believe this is no longer the case in the new Blitz which seems to have reasonable cpu usage.