Opened 12 years ago

Last modified 3 years ago

#2105 assigned bug

BeLiveR5 hangs on splash screen

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


Attachments (1)

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

Download all attachments as: .zip

Change History (7)

comment:1 by kaoutsis, 12 years ago

revision is hrev25058

comment:2 by pulkomandy, 9 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, 9 years ago

Attachment: test.cpp added

Test app showing TranslationUtil locking problem.

comment:3 by axeld, 9 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, 7 years ago

The original BeLive can now be found here:

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

comment:6 by waddlesplash, 7 years ago

Version: R1/pre-alpha1R1/alpha4.1

comment:7 by axeld, 3 years ago

Owner: changed from axeld to nobody
Status: newassigned
Note: See TracTickets for help on using tickets.