front end – Animate causing a hang in 12.3

Can somebody replicate the following issue with release 12.3.0 or is it only on my machine?

Prerequisite: make sure your Internet connection is working, you are signed in to Wolfram Cloud Account with Mathematica on start up and that the Suggestion bar is enabled.

2.] Start a new Mathematica session and open a new notebook.

3.] Evaluate the following:

Animate[
 ParametricPlot[{Sin[12 u] Cos[u], Sin[12 u] Sin[u]}, {u, 0, umax},
  PlotRange -> {-1, 1}], {umax, 0.1, 2 Pi}]

After that the Frontend hangs and a popup “The kernel is not responding to a dynamic evaluation” shows up.

hang – Why does Pages constantly freeze on a particular pages document

I’m writing a report (4000 words)on Pages in the past few days. However, since this afternoon, after I added a new picture to the report, this report has been constantly unresponsive whenever I scroll down/up or type something.

I’ve restarted macbook but it doesn’t solve the problem.

I also opened a small document (200 words), everything works fine.

Macbook Pro 2018. MacOs: Big Sur 11.2.3

domain driven design – Job scheduling using hang fire DDD in c#

Job Scheduler Service
UI layer ->API Layer -> Application Layer
Domain
Infrastruture.Persistance
Infrastruture.JobStorage
Core Layer

API Layer will dependent on Application Layer having interface Infrastructure layer will dependent on Application Layer via the interface.

The infrastructure layer and Application Layer will have the Domain Dependency.

And my Application Layer having CQRS with MediatR.

This is the way all the layers are linked.

I used hangfire to do the scheduling. So in the Core layer, I have a common class called JobExecutor which is implemented by using an interface IExecutor. Inside this, I am doing mediator to call the command. Which is a generic code. This interface is used by hangfire to schedule the commands.

Infrastructure.JobStorage Is the layer which is adding an entry to the hangfire database. This is done by calling hangfire.core.dll provided by hangfire. This Hangfire Library is using the Core interface IExecutor

So my question is it a best practice to pass the command which is present in the Application Layer to the Infrastructure Layer.

Let me know any more details.

hang – BigSur – unresponsive dialogs to mouse actions

Sometimes at the beginning of the year 2021, I started to have a problem with the “File upload” dialogs in the web browser. The dialog is unresponsive to the mouse. I can use the keyboard for navigation, but the Tab key only switch between the left panel and the “Search” field and I’m unable to focus the main area with files, thus I’m unable to select one, but I can escape that dialog with Esc and, as this regards also “Save as” dialogs, I’m able to select some directory in left panel’s “Favorites” and confirm with Enter.

As time passes, I realized, that this problem applies to almost all native dialogs. I’m currently unable to open e.g. Pages or Textedit, as it starts with the “File open” dialog, which I’m unable to handle.

And yesterday, I needed to tweak some configuration in “Security & Privacy” in “System Preferences” and I realized it has the same symptoms. I can click on the top navigation panel and return back to the “System Preferences” main screen, but I’m unable to click on anything in the “Security & Privacy” main section. The keyboard navigation works, but, again, the Tab key only switches between the left list and the “Search” field, and I’m unable to click on “Click the lock to make changes” so, it’s all helpless.

I googled for similar issues, but so far found nothing heplful.

Does anyone have some idea where to look, what to try?

Viêm xung huyết hang vị dạ dày ăn kiêng gì? Nguyên nhân và cách chữa

Viêm xung huyết hang vị dạ dày là bệnh lý tổn thương dạ dày khá phổ biến. Nếu không phát hiện sớm và điều trị đúng cách, bệnh có thể chuyển sang dạng mạn tính, đe dọa đến tính mạng con người. Vậy viêm xung huyết hang vị dạ dày có thật sự nguy hiểm không? Triệu chứng và dấu hiệu nhận biết như thế nào?

Tìm hiểu về viêm xung huyết hang vị dạ dày

Trong hệ tiêu hóa con người, dạ dày là cơ quan phình to nhất nằm ở ống tiêu hóa. Dạ dày có vai trò chứa thức ăn, co bóp và nghiền nát thức ăn, tại dạ dày, các chất dinh dưỡng được hấp thụ một phần qua nhu động.

Viêm hang vị dạ dày?

Bệnh viêm hang vị dạ dày là hiện tượng xuất hiện các ổ viêm loét tại phần hang vị của dạ dày. Các tế bào niêm mạc thành dạ dày ở hang vị bị tấn công dẫn đến phù nề, sưng tấy và loét, nhiễm trùng, gây nên những cơn đau với mức độ khác nhau tùy vào tình trạng bệnh lý.

Viêm xung huyết hang vị dạ dày là gì?

Viêm xung huyết hang vị là một dạng của bệnh lý viêm hang vị dạ dày. Đây là hiện tượng vùng hang vị dạ dày xuất hiện các ổ viêm, nhiễm trùng nặng, làm các mạch máu bị giãn nở dẫn đến sưng đỏ. Bệnh lý này có thể chữa trị với điều kiện người bệnh tuân thủ liệu trình điều trị mà bác sĩ đã đề ra cùng chế độ ăn uống, sinh hoạt khoa học. Viêm hang vị dạ dày không gây nguy hiểm đến tính mạng người bệnh. Tuy nhiên nhiều người lại có tâm lý chủ quan, không nghiêm túc trong quá trình điều trị. Bởi ở giai đoạn đầu, các biểu hiện bệnh lý không quá nghiêm trọng, người bệnh có thể chịu đựng được, nên dần có tâm lý chủ quan. Điều này khiến bệnh nhân bo qua thời điểm vàng để điều trị dứt điểm, làm tình trạng bệnh lý càng trở nên nghiêm trọng hơn, việc điều trị cũng vì vậy mà trở nên tốn kém chi phí và khó khăn hơn.

Nguyên nhân gây viêm xung huyết hang vị dạ dày

Do vi khuẩn HP: vi khuẩn HP là nguyên nhân chính yêu gây nên rất nhiều bệnh lý nguy hiểm liên quan đến dạ dày. Theo nghiên cứu, có hơn 50% dân số Việt Nam nhiễm vi khuẩn này. Vi khuẩn HP gồm hai loại là thể gây bệnh và thể không gây bệnh. Trong đó, hơn 70% người nhiễm vi khuẩn HP là loại gây bệnh. Loại vi khuẩn này ký sinh trong màng nhầy của lớp niêm mạc và gây tác động làm tổn thương các tế bào niêm mạc, tế bào tuyến tiết dịch ở thành dạ dày.

Tác dụng phụ của một số loại thuốc: Dùng quá nhiều thuốc kháng sinh, giảm đau trong thời gian dài khiến cho dạ dày bị tổn thương, viêm loét và xuất huyết.

Chế độ ăn uống không khoa học: Chế độ ăn uống luôn được các nhà khoa học khuyến cáo phù hợp với từng đối tượng để hạn chế thấp nhất các nguy cơ nhiễm bệnh. Đây là một trong những nguyên nhân chủ yếu tác động trực tiếp đến dạ dày và các bộ phận nơi đây. Ngoài việc ăn uống đảm bảo dinh dưỡng hợp lý thì bạn cũng nên chú ý đến thời gian dùng bữa. Việc ăn uống không được phân chia thời gian hợp lý (lúc quá no, lúc quá đói) sẽ ảnh hưởng không tốt đến hang vị dạ dày và có thể dẫn đến tình trạng viêm và xuất huyết.
Các vấn đề về tâm lý: Stres kích thích tăng tiết cortisol – một chất làm giảm chức năng tiết chất nhầy bảo vệ niêm mạc, đồng thời tăng tiết axit dịch vị dư thừa.

Những thực phẩm người bệnh viêm xung huyêt hang vị dạ dày nên sử dụng

Cháo, bột ngũ cốc: Đây là 2 loại thực phẩm giàu chất xơ rất có lợi cho hệ tiêu hóa đặc biệt là dạ dày. Vì vậy khi bị mắc bệnh viêm xung huyết hang vị hầu hết các chuyên gia y tế hàng đầu trên thế giới đều khuyên bạn nên sử dụng thực phẩm này để hỗ trợ phòng tránh ngăn ngừa bệnh biến chứng nặng hơn.

Mật ong, rau xanh, củ non…Các loại thực phẩm, đồ uống này có nhiều chất dinh dưỡng và rất tốt cho dạ dày

Trứng và sữa là những loại thực phẩm ăn uống thông dụng hàng ngày nhưng tác dụng to lớn của nó với dạ dày không phải ai cũng biết. 2 Loại thực phẩm này có thể giúp người bệnh trung hòa axit và giảm đau.

Viêm xung huyết hang vị dạ dày là bệnh lý có thể chữa trị một cách dễ dàng không gây nguy hiểm đến tính mạng người bệnh. Tuy nhiên nếu bạn chủ quan không phòng tránh và điều trị sớm thì bệnh có diễn tiến phức tạp thành một số bệnh như viêm loét, xuất huyết hoặc thủng dạ dày và đặc biệt nguy hiểm nếu biến chứng thành ung thư. Bệnh không được điều trị sẽ thường xuyên gây ra tình trạng đảo lộn cuộc sống, người bệnh sẽ bị ảnh hưởng bởi các cơn đau bụng thường xuyên gây khó chịu ảnh hưởng tâm lý…

Viêm xung huyết hang vị dạ dày hoàn toàn có thể dẫn đến những biến chứng nguy hiểm cho sức khỏe. Mong rằng những thông tin Dạ dày Vitos chia sẻ trên đây giúp người bệnh hiểu rõ hơn về bệnh lý này và bắt đầu thay đổi, xây dựng những thói quen tốt để bảo vệ sức khỏe bản thân. Chúc các bạn nhanh chóng khỏi bệnh.

.(tagsToTranslate)webmaster forum(t)internet marketing(t)search engine optimization(t)web designing(t)seo(t)ppc(t)affiliate marketing(t)search engine marketing(t)web hosting(t)domain name(t)social media

Viêm xung huyết hang vị dạ dày và những điều không thể bỏ qua

Viêm xung huyết hang vị dạ dày là bệnh lý tổn thương dạ dày khá phổ biến. Nếu không phát hiện sớm và điều trị đúng cách, bệnh có thể chuyển sang dạng mạn tính, đe dọa đến tính mạng con người. Vậy viêm xung huyết hang vị dạ dày có thật sự nguy hiểm không? Triệu chứng và dấu hiệu nhận biết như thế nào?

Viêm xung huyết hang vị dạ dày là như thế nào?

Trong hệ tiêu hóa con người, dạ dày là cơ quan phình to nhất nằm ở ống tiêu hóa. Dạ dày có vai trò chứa thức ăn, co bóp và nghiền nát thức ăn, tại dạ dày, các chất dinh dưỡng được hấp thụ một phần qua nhu động.

Viêm hang vị dạ dày là gì?

Viêm hang vị dạ dày là tình trạng hạ vị bị viêm sưng, dẫn tới dạ dày gặp tổn thương từ đó gây ra những cơn đau âm ỉ và dữ dội người bệnh cảm nhận được. Là bệnh lý có thể gặp ở mọi lứa tuổi nhưng người lớn chiếm tỉ lệ cao hơn trẻ em, đặc biệt là ở những người cao tuổi. Bệnh nếu không được điều trị đúng cách có thể tiến triển thành ung thư.

Viêm xung huyết hang vị dạ dày là gì?

Viêm xung huyết hang vị xuất hiện khi hang vị dạ dày bị viêm dẫn tới việc các mạch máu vùng niêm mạc dạ dày giãn nở đỏ hơn các vùng khác.

Nguyên nhân gây viêm xung huyết hang vị dạ dày

Do vi khuẩn HP: Chiếm đến 90% gây bệnh. Vi khuẩn HP khi xâm nhập vào dạ dày sẽ giải phóng các chất độc gây viêm loét và xuất huyết ở hang vị dạ dày ngày một trầm trọng hơn.

Tác dụng phụ của một số loại thuốc: Các loại thuốc giảm đau như mobic, aspirin,… và thuốc chống viêm như NSAID, prednisolon, dexamethason,… khi được người bệnh sử dụng với liều lượng nhiều và thường xuyên sẽ tác động không tốt đến dạ dày và hang vị. Qua thời gian sử dụng lâu dài chúng sẽ gây tình trạng bào mòn và làm mỏng thành hang vị. Từ đó, sẽ làm cho bộ phận này trở nên yếu hơn và sẽ không còn đủ sức chóng chọi lại với các tác nhân gây hại từ bên ngoài.

Chế độ ăn uống không khoa học: Việc có một chế độ ăn uống không phù hợp, thiếu chất dinh dưỡng, sử dụng nhiều chất kích thích như rượu, bia có thể gây kích ứng và làm mỏng lớp niêm mạc dạ dày, gây viêm loét.

Các vấn đề về tâm lý: tâm lý tiêu cực gây tác động xấu lên dạ dày, khiến chức năng dạ dày bị rối loạn hoặc phải hoạt động quá sức. Từ đó, dẫn đến hệ quả dư thừa nhiều acid và gây ra viêm hang vị dạ dày.

Viêm xung huyết hang vị dạ dày nên ăn những thực phẩm nào?

Cháo, bột ngũ cốc: Đây là 2 loại thực phẩm giàu chất xơ rất có lợi cho hệ tiêu hóa đặc biệt là dạ dày. Vì vậy khi bị mắc bệnh viêm xung huyết hang vị hầu hết các chuyên gia y tế hàng đầu trên thế giới đều khuyên bạn nên sử dụng thực phẩm này để hỗ trợ phòng tránh ngăn ngừa bệnh biến chứng nặng hơn.

Mật ong, rau xanh, củ non…Các loại thực phẩm, đồ uống này có nhiều chất dinh dưỡng và rất tốt cho dạ dày

Trứng và sữa là những loại thực phẩm ăn uống thông dụng hàng ngày nhưng tác dụng to lớn của nó với dạ dày không phải ai cũng biết. 2 Loại thực phẩm này có thể giúp người bệnh trung hòa axit và giảm đau.

Viêm xung huyết hang vị dạ dày là bệnh lý có thể chữa trị một cách dễ dàng không gây nguy hiểm đến tính mạng người bệnh. Tuy nhiên nếu bạn chủ quan không phòng tránh và điều trị sớm thì bệnh có diễn tiến phức tạp thành một số bệnh như viêm loét, xuất huyết hoặc thủng dạ dày và đặc biệt nguy hiểm nếu biến chứng thành ung thư. Bệnh không được điều trị sẽ thường xuyên gây ra tình trạng đảo lộn cuộc sống, người bệnh sẽ bị ảnh hưởng bởi các cơn đau bụng thường xuyên gây khó chịu ảnh hưởng tâm lý…

Viêm xung huyết hang vị dạ dày hoàn toàn có thể dẫn đến những biến chứng nguy hiểm cho sức khỏe. Mong rằng những thông tin Dạ dày Vitos chia sẻ trên đây giúp người bệnh hiểu rõ hơn về bệnh lý này và bắt đầu thay đổi, xây dựng những thói quen tốt để bảo vệ sức khỏe bản thân. Chúc các bạn nhanh chóng khỏi bệnh.

.

ubuntu – how to triage linux disk IO system-wide “hang”

I have a box that is periodically “going out to lunch”. Symptoms are anything requiring actual disk IO hang for 30+ seconds, and it appears anything already paged in is unaffected. The problem occurs intermittently, up to a few times an hour), and has not been traceable so far to any running program or user behavior. Re-imaging the box now would be a large disruption, so I hope to isolate the issue and hopefully prove that’s unnecessary. Ubuntu 20.04 system with btrfs-on-luks nvme root fs.

user descriptions + log analysis (dmesg and journalctl) do not show any behavior correlated with the issue, other than io-timeout related messages after 10’s of seconds that seem to clearly be symptoms/fallout. The box was in use (with no instances of this issue noted) for ~6 months with ubuntu 20.04, before being re-imaged several months ago, so I have that minor datapoint that the issue isn’t failing hw. btrfs scrub and bios smart don’t report any errors.

using iotop -o live during a reproduction I can see that actual throughput to disk drops to ~zero with the exception of a couple kernel threads (kworker/.*events-power-efficient).

Please recommend next steps to triage / isolate why the IO is hanging.

Giới thiệu : Hino Việt Nhật: Đại lý 3S chuyên phân phối xe tải Hino chính hãng

Thương hiệu xe tải Hino Việt Nhật không còn xa lạ đối với những chủ đầu tư kinh doanh trong lĩnh vực vận tải. Trải dọc toàn quốc với 21 đại lý phân phối chính hãng các dòng xe tải Hino, khách hàng hoàn toàn có thể yên tâm đến với các đại lý phân phối và cung cấp xe tải chính hãng của công ty Hino. Với sự tân tâm và chuyên nghiệp trong công việc, hiện nay Hino ngày càng phát triển hơn nữa từ chất lượng dòng xe cho đến các chính sách chăm sóc khách hàng.Tự hào là một trong những đại lý xe tải Hino, Công ty TNHH thương mại ô tô Việt Nhật, hay Hino Việt Nhật có địa chỉ tại số 319 đường Hùng Vương, phường Quán Toan, quận Hồng Bàng, thành phố Hải Phòng. Hino Việt Nhật là đại lý cấp 1 (3S) trong công ty Hệ thống Hino Việt Nam do Hino Motors Việt Nam ủy quyền tại Hải Phòng. Chúng tôi có đầy đủ các chức năng là nhà cung cấp sản phẩm xe tải Hino, cơ quan bảo vệ quyền lực của hiệp hội và Repair for Hino, take your Hino,… Vậy nên, đối với các khách hàng đang có nhu cầu tìm kiếm địa chỉ đại lý 3S chuyên phân phối xe tải Hino chính hãng hãy đến với đại lý Hino Việt Nhật để hoàn toàn yên tâm về nguồn gốc xuất xứ của sản phẩm xe tải mà khách hàng sẽ mua trong thời gian tới.

Hino Việt Nhật tự hào là đại lý cấp 1 của Hino Việt Nam


HINO VIỆT NHẬT: ĐẠI LÝ CHUYÊN PHÂN PHỐI XE TẢI HINO CHÍNH HÃNG

Việc tràn lan các dòng xe nhái, kém chất lượng trên thị trường mua bán xe tải không phải là việc xa lạ đối với người tiêu dùng vậy nên khi khách hàng có nhu cầu muốn xe tải, các chuyên gia khuyến khích khách hàng nên tìm đến các đơn vị đại lý phân phối chính hãng của thương hiệu xe tải mình muốn mua để sở hữu được dòng sản phẩm xe tải chất lượng tốt nhất, đặc biệt đảm bảo và cam kết chính hãng. Ngoài ra, khi mua sản phẩm xe tải chính hãng thì đi kèm với đó là các hoạt động dịch vụ chăm sóc khách hàng, quy trình bảo dưỡng định kì cũng được thực hiện một cách bài bản, chuyên nghiệp.

CÁC DỊCH VỤ PHỤC VỤ KHÁCH HÀNG TẠI ĐẠI LÝ XE TẢI HINO

  • Đại lý xe tải Hino Việt Nhật phân phối xe tải Hino lắp ráp và nhập khẩu chính hãng
  • Đại lý xe tải Hino là trạm bảo hành, bảo dưỡng, sửa chữa xe tải Hino chính hãng tại Hải Phòng
  • Cung cấp phụ tùng chính hãng, phụ kiện và các trang thiết bị của xe tải Hino
  • Thiết kế, đóng mới, nhập khẩu các loại thùng chuyên dụng (Công ty chúng tôi đã được Cục Đăng kiểm Việt Nam cấp giấy chứng nhận cơ sở đóng thùng theo tiêu chuẩn của Cục ĐKVN)
  • Dịch vụ sửa chữa lưu động
  • Hỗ trợ tài chính, hỗ trợ khách hàng mua xe Hino trả góp với thủ tục nhanh gọn
  • Hỗ trợ khách hàng có nhu cầu mua bán, trao đổi xe cũ lấy xe Hino mới
  • Cung cấp các dịch vụ Bảo hiểm xe.
  • Hỗ trợ giao xe toàn quốc, hỗ trợ các thủ tục đăng ký, đăng kiểm…theo yêu cầu của khách hàng.
  • Hino Việt Nhật sẵn sàng hỗ trợ các vấn đề kỹ thuật, tư vấn kỹ thuật, bào trì, bảo dưỡng xe tải hino bất cứ khi nào Quý khách có nhu cầu.


LÝ DO KHÁCH HÀNG NÊN LỰA CHỌN XE TẢI HINO CHÍNH HÃNG TẠI HINO VIỆT NHẬT

Kể từ khi chính thức trở thành đại lý cấp 1 được Hino Motor Việt Nam ủy quyền và là đại lý duy nhất tại Hải Phòng – Hino Việt Nhật chúng tôi đã cho ra nhiều sản phẩm đa dạng tùy theo sự lựa chọn của khách hàng và hàng hóa chuyên chở khi sử dụng. Tính đến năm 2020, đại lý xe tải Hino Hải Phòng chúng tôi bán ra hơn 1000 chiếc xe tải Hino các loại. Đó là 1 kết quả của sự nỗ lực và chất lượng sản phẩm, chất lượng dịch vụ tốt nhất mà Hino Việt Nhật luôn mang đến cho khách hàng


Hino Việt Nhật đã cung cấp hàng ngàn xe tải Hino chính hãng cho thị trường miền Bắc

Bên cạnh đó, Hino Việt Nhật đã đầu tư trạm bảo dưỡng đạt chuẩn 3S phục vụ sau bán hàng, quý khách hàng có thể lựa chọn khu vực gần nhất để được kiểm tra bảo dưỡng đại lý xe tải Hino chính hãng miễn phí khi khách hàng đã mua xe tại đại lý chúng tôi, áp dụng 5 lần đối với xe tải Hino 300 series và 7 lần bảo dưỡng đối với xe hino series 500, ngoài ra quý khách hàng còn được giảm giá 10% phụ tùng khi khách hàng mua phụ tùng tại trạm bảo dưỡng 3s.Hằng năm, đại lý xe tải Hino Việt Nhật có nhiều chương trình kế hoạch nhằm tri ân sâu sắc đến khách hàng như hỗ trợ khách hàng đến tận nơi kiểm tra bảo dưỡng thay thế, tặng quà cuối năm cho khách hàng. Ngoài ra khi khách hàng mua phụ tùng xe tải hino chính hãng sẽ luôn được giảm 10% khi mua phụ tùng chính hãng.

MỘT SỐ DÒNG XE TẢI HINO BÁN CHẠY NHẤT TẠI THỊ TRƯỜNG MIỀN BẮC

Dòng xe tải Hino 300 series được ưa chuộng và bán chạy nhất vì dòng xe này nhập khẩu nguyên chiếc, với thiết kế đơn giản, cabin nhỏ gọn, tải trọng tương đối hợp lý rất thích hợp cho chủ đầu tư vận chuyển vào những cung đường hẻm nhỏ. Dòng xe này giúp tiết kiệm nhiên liệu tầm 13L/100km. Dòng xe tải Hino 300 series đang có nhiều bước tiến lớn trong những năm qua đáp ứng được những nhu cầu của khách hàng.

Xe tải Hino 300 series là dòng xe tải nhẹ được ưa chuộng và bán chạy nhất

Ngoài ra, dòng xe tải nặng cũng là thế mạnh của đại lý xe tải Hino Việt Nhật chính hãng. Quý khách hàng đầu tư xe tải nặng có thể lựa chọn các model xe tải Hino 500 series với tải trọng lên đến 15 tấn, và thùng xe hino rất dài đến 9m2. Theo thống kê của nhà máy hino dòng xe này tiêu hao nhiêu liệu 23L/100Km tiết kiệm hơn so với nhiều dòng xe khác kể cả bật cả điều hòa công suất tối đa. Dòng xe này khá phổ biến, rất nhiều chủ đầu tư đã chuyển từ những dòng xe khác như: huyndai, fuso, kia.vvv…. để đầu tư xe tải Hino 500 series vì xe tải hino có những lợi ích đem lại là hơn cả tuyệt vời so với những dòng xe khác thì thị trường.

Mỗi một mẫu xe tải Hino sẽ được đánh giá và lựa chọn theo nhu cầu, mục đích sử dụng của các chủ đầu tư. Các dòng xe khác nhau sẽ có những tính năng kĩ thuật riêng biệt để đáp ứng nhu cầu công việc của khách hàng. Đại lý xe tải Hino Việt Nhật – Đại lý chuyên mua bán xe tải Hino chính hãng, với đội ngũ tư vấn viên chuyên nghiệp và am hiểu thông tin kĩ thuật sẽ tư vấn mua bán xe tải Hino chính hãng cho các khách hàng một cách chi tiết, chính xác và hợp lý nhất để quý khách có thể có được sự lựa chọn đúng, tiết kiệm chi phí và khai thác tối ưu lợi ích từ khoản đầu tư này.

Nguồn : hinovietnhat.com

.(tagsToTranslate)webmaster forum(t)internet marketing(t)search engine optimization(t)web designing(t)seo(t)ppc(t)affiliate marketing(t)search engine marketing(t)web hosting(t)domain name(t)social media

Unreal Engine 4 – Error in Macro Syntax Causes Build to Hang

Errors in macro syntax causes the module’s build to hang for 2+ hours (possibly, indefinitely) with no indication of a build error.

Steps to Reproduce

  1. Create a template game project in the editor.
  2. Introduce the following macro into some C++ code:
UE_LOG(LogTemp, WrongVerbosityTypeHere, TEXT("Some Text Here"));
  1. Trigger a module-only build e.g. right-click project > Build.

  2. Look for the following in the build output:

1>Using Visual Studio 2019 14.28.29335 toolchain (C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.28.29333) and Windows 10.0.18362.0 SDK (C:Program Files (x86)Windows Kits10).
1>Building 4 actions with 32 processes...
  1. The message should stay the same for 2+ hours. So wait for that long or until you feel something is wrong…

  2. Remove or correct the macro usage.

  3. Trigger module-only build.

  4. Build completes in seconds.

  • Windows 10 (Version 10.0.19042 Build 19042)
  • Visual Studio Community 2019 (Version 16.8.3)
  • Unread Editor 4.26 (Version 4.26.0-0+++UE4+Release-4.26)
  1. Is this a known bug?
  2. If not, is there a configuration in UBT via Visual Studio or in the terminal to report errors quickly?

Unreal Engine Forums

c++ – Bidirectional thread communication with multiple condition_variable has rare hang / race condition

I have a rather strange example, and so I will just put the context out here briefly, and we can hopefully just pretend it’s a good idea.

I’m using a profiler that requires regular calls to its FRAME() macro so that it knows where CPU frames of a game start and end (the object the macro builds is RAII/scope based). I’m using fibers for my threading (main ‘thread’ is also a fiber worker), and this profiling macro only supports being called from a thread not registered with the profiler as a fiber worker thread. Ergo, I have this awful solution in the short-term, where I communicate to a separate thread just for this macro. The goal is to get the timing of construction/destruction of the RAII object as accurate as possible on this separate thread without disrupting the calling thread’s timing. But sometimes, the entire application hangs. I don’t understand how that’s possible here.

Main ‘thread’ (actually on a fiber but that doesn’t matter) / game loop:

FrameProfile frameProfile("Client Update");
while (!bShouldQuit)
{
    frameProfile.StartFrame();
    
    /* Do the game client's work for this frame */

    frameProfile.EndFrame();
}

And then this FrameProfile object is responsible for spinning up a separate thread, and will let that thread enter the FRAME macro scope when StartFrame is called from the above, and that thread will sleep in that scope until EndFrame is called, at which point it will wake up and exit the scope, destroying the profiler’s frame-measuring object, and giving us a hopefully-accurate frame time.

struct FrameProfile
{
    FrameProfile(const char* tag)
    {
        pthread_ = std::make_unique<std::thread>(
            (tag, this)(std::atomic_bool& killFlag) {
                while (!killFlag)
                {
                    assert(!endThreadFrame.WasSignalled());
                    startThreadFrame.WaitConsume();
                    {
                        assert(!startThreadFrame.WasSignalled());
                        assert(!endedThreadFrame.WasSignalled());

                        // Construct the frame-measuring object using this macro
                        OPTICK_FRAME(tag);

                        startedThreadFrame.Signal();

                        endThreadFrame.WaitConsume();
                        // endThreadFrame has been signalled - we need to exit scope
                        // to finish measuring ASAP
                    }
                    assert(!endThreadFrame.WasSignalled());
                    endedThreadFrame.Signal();
                }
            },
            std::ref(bKill_)
        );
    }

    ~FrameProfile()
    {
        bKill_ = true;
        if (pthread_)
        {
            if (pthread_->joinable())
            {
                pthread_->join();
            }
        }
    }

    void StartFrame()
    {
        assert(!startThreadFrame.WasSignalled());
        assert(!startedThreadFrame.WasSignalled());

        // Tell thread to start measuring the frame
        startThreadFrame.Signal();

        // Wait for thread to have started frame measurement
        startedThreadFrame.WaitConsume();
    }
    void EndFrame()
    {
        assert(!endThreadFrame.WasSignalled());
        assert(!endedThreadFrame.WasSignalled());

        // Tell thread to end frame measurement
        endThreadFrame.Signal();

        // Wait for thread to have ended frame measurement
        endedThreadFrame.WaitConsume();
    }


private:
    std::unique_ptr<std::thread> pthread_;
    std::atomic_bool bKill_ = false;

    struct ThreadSignal
    {
        std::atomic_bool bSignalled;
        std::mutex mutex;
        std::condition_variable cv;

        void Signal()
        {
            assert(!bSignalled);
            {
                std::unique_lock<std::mutex> _(mutex);
                bSignalled = true;
            }
            cv.notify_all();
        }

        bool WasSignalled()
        {
            return bSignalled;
        }

        void WaitConsume()
        {
            std::unique_lock unique(mutex);
            cv.wait(unique, (this)() { return bSignalled == true; });
            unique.unlock();
            bSignalled = false;
        }
    };

    ThreadSignal startThreadFrame;
    ThreadSignal endThreadFrame;

    ThreadSignal startedThreadFrame;
    ThreadSignal endedThreadFrame;
};

Can you spot what I’m doing wrong here? Or even a much better solution, I’d be open to it! It’s rare but it hangs sometimes – one of the ‘ThreadSignal’ objects will have its bool as ‘true’, but will still be stuck – I guess there’s a rare timing issue here.

Many thanks! Been tearing my hair out.