Opened 16 years ago

Closed 4 years ago

#2105 closed bug (fixed)

BeLiveR5 hangs on splash screen

Reported by: kaoutsis Owned by: nobody
Priority: normal Milestone: R1/beta3
Component: - General Version: R1/alpha4.1
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

Attachments (1)

test.cpp (1.4 KB ) - added by pulkomandy 13 years ago.
Test app showing TranslationUtil locking problem.

Download all attachments as: .zip

Change History (8)

comment:1 by kaoutsis, 16 years ago

revision is hrev25058

comment:2 by pulkomandy, 13 years ago

Still hangs in hrev42434. After some debugging and source observation, here is what happens :

  • The splash screen is created in the BApplication constructor, and shown there.
  • It uses BTranslationUtils to load its picture.
  • BTranslationUtils->GetBitmap tries to lock the application BLooper. Since the constructor is not finished, Run() was not called, so it waits on that.
  • The constructor does more things ; later it wants to close the splash screen, and to do this, it tries to Lock() it. But the splashscreen is still trying to lock the application...

So, the app Run() will never get called. We have a deadlock!

Attached is a minimal application replicating the issue.

Seems like on BeOS, TranslationUtils didn't need to lock the BApplication ?

by pulkomandy, 13 years ago

Attachment: test.cpp added

Test app showing TranslationUtil locking problem.

comment:3 by axeld, 13 years ago

I'm not sure if it's worth to fix that. In any case, the problem stems from the BTranslatorRoster::Private class which adds itself as a handler to be_app, in order to provide node monitoring support for the translators. This tremendously cuts speeds up loading things from via translators, as they don't have to be reloaded every time you load something using it. I tried to save adding another looper for all teams that use the translation kit.

Alternatively, we could just add a port, and evaluate the notifications only every time the kit is used.

In any case, we should try to have a single usable implementation of such an add-on listener somewhere (I know that there is one in our storage kit, but I'm not really confident with that one).

comment:4 by waddlesplash, 11 years ago

The original BeLive can now be found here: http://dev.osdrawer.net/attachments/download/51/BeLiveR5.zip

And this is still a problem on R1/alpha4.1

comment:6 by waddlesplash, 11 years ago

Version: R1/pre-alpha1R1/alpha4.1

comment:7 by axeld, 7 years ago

Owner: changed from axeld to nobody
Status: newassigned

comment:8 by pulkomandy, 4 years ago

Milestone: R1R1/beta3
Resolution: fixed
Status: assignedclosed

Fixed in hrev54492.

Note: See TracTickets for help on using tickets.