Comment 102 for bug 439448

Revision history for this message
Bruno Girin (brunogirin) wrote :

@Chris, I will do the change. However, as the bug is intermittent, it's difficult to say whether it's fixed or not.

Having said this, I've got a theory that I'd like to get past you to see if it makes sense. The issue only occurs in the Indicator Applet so could it be triggered by some behaviour that is specific to that applet and no other? I downloaded the code for indicator-applet and if I understand it well, here's what happens:
- there are 2 instances of the applet: Indicator Applet and Indicator Applet Session, the later being responsible for the "me" and "session" menus and the former being responsible for all other menus, in particular the application notification;
- login time is when most applications that create an indicator start and they all start in parallel

So could there be a race condition in indicator-applet? In particular, is there a possibility that several threads call the applet_fill_cb or load_module methods in indicator-applet/applet-main.c, which themselves call entry_added. If you have several threads calling entry_added at the same time, there is a chance that line 225, which as far as I understand calculates the entry's position, could be called several times concurrently and hence calculate an erroneous position? Line 225 on my version is this:

gtk_container_foreach(GTK_CONTAINER(menubar), place_in_menu, &position);

How can I confirm whether this is the case? I'm happy to add extra log statements to that code and run it if it helps.