Jump to content

Does this happen to anyone with large Marketplace inventory? Viewer hangs for 10 seconds when moving items in or out.


Elissa Taka
 Share

Recommended Posts

I've been having a weird issue that's been getting worse over the years. When I move items in and out of the Marketplace, the viewer freezes for 10 seconds, goes white, then pops back to life. It doesn't sound like a lot, but if I'm moving dozens of items, it adds up. 

Worth noting:

  • My Marketplace inventory has ~ 2000 active listings and ~2000 inactive listings. 
  • My inventory has 35k items, but they're well organized so I don't have tens of thousands in one folder
  • No problem with my machine specs, I have 64 gigs / ram, good CPU & GPU (it's Windows for what it's worth)
  • I tried this on my Mac and it works fine, no crash (that said I didn't do an extensive test, nor do I use my Mac a lot so who knows). Sadly this isn't an option, SL turns my Mac laptop into a small nuclear furnace. 
  • Tried cleaning my inventory cache etc (even tried it with a brand new install with all remnants of the 
  • Tried both Firestorm and the official viewer. Same results

That's it. Logic says it's a bug with the Windows viewer. Mostly I wanted to know if I was the only one. I can deal with it until it gets discovered and fixed, I just want to make sure it's not something I'm doing.

Any ideas?

edit: actually more like 20-30 seconds. I never really counted until now :)

 

Edited by Elissa Taka
Link to comment
Share on other sites

  • Lindens
On 9/25/2021 at 11:35 AM, Elissa Taka said:

Any ideas?

Run Windows Task Manager and have it visible while you're doing these actions.  Select 'Processes' display, all users, sort by cpu usage.  See what jumps to the top of the list while you're doing these MP operations and report back.

Link to comment
Share on other sites

  • 3 weeks later...
On 9/29/2021 at 12:40 AM, Monty Linden said:

Yes it does.  Still curious about the process display.  The 'not responding' mode often has a hard CPU spin associated with it.

Good question, but nothing unusual. The orange box is around when it crashed. The same with GPU, memory, etc.

 

image.png.d1b042c3eeec73f17855816f52b72e24.png

Link to comment
Share on other sites

Ok I restarted the viewer with the external debugging console (developer -> Console window on next run) enabled. Yikes! When I rename an item the console is flooded with messages like:
 

2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1799) LLInventoryModel::notifyObservers : Call was made to notifyObservers within notifyObservers!
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1799) LLInventoryModel::notifyObservers : Call was made to notifyObservers within notifyObservers!

 

Logging to console is taking so long that the viewer is locked up while trying to log. After about 10 min of watching it scroll endlessly I killed the process.

I'm going to take a semi-educated guess that every time inventory changes there's some kind of full refresh of the Marketplace inventory (or possible both MP and regular inventories), either internally or via the network. Maybe it's temporarily running out of memory, or a watchdog timer is getting tripped.

I'll keep digging. 

 

Link to comment
Share on other sites

On 10/14/2021 at 5:58 PM, Elissa Taka said:

Ok I restarted the viewer with the external debugging console (developer -> Console window on next run) enabled. Yikes! When I rename an item the console is flooded with messages like:
 

2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1799) LLInventoryModel::notifyObservers : Call was made to notifyObservers within notifyObservers!
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1835) LLInventoryModel::addChangedMask : Adding changed mask within notify observers!  Change will likely be lost.
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1846) LLInventoryModel::addChangedMask : Category **JPK Tobacco Backpack Gacha (Listerine) BOX
2021-10-14T15:35:06Z WARNING #Inventory# newview/llinventorymodel.cpp(1799) LLInventoryModel::notifyObservers : Call was made to notifyObservers within notifyObservers!

 

On 10/14/2021 at 7:38 PM, Monty Linden said:

Thanks for digging.  This does smell a bit...

It does smell... I spotted this bug back in the time when I backported the Marketplace code to the Cool VL Viewer. Here is the culprit code and my comment about it.

#if 0	// This is a bogus thing to do here (because updateCategory() would
		// change the modify masks and that change would have all risks to be
		// ignored, simply triggering the warning above), and should not be
		// needed any more now that I fixed the observer code for the
		// marketplace (by moving changes to the inventory structure out of
		// the observer event code and into an idle callback). HB
		if (LLMarketplace::contains(referent))
		{
			LLMarketplace::updateCategory(referent, false);
		}
#endif

Note that since my backport is actually a partial re-implementation of LL's code, you'll need to do more than just commenting out the corresponding line in LL's viewer sources (see my comment about moving inv structure changes out of the observer code).

The corresponding line in LL's viewer code for the recursive notifyObservers() call you observe is:

        update_marketplace_category(referent, false);

Around line 1697 of newview/llinventorymodel.cpp.

Edited by Henri Beauchamp
  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...