Anonymous | Login | Signup for a new account | 2021-03-09 02:49 PST | ![]() |
Main | My View | View Issues | Change Log | Roadmap | Summary | My Account |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | |||||
0008813 | opensim | [GRID] Inventory Service | public | 2020-11-18 16:58 | 2020-11-19 11:31 | |||||
Reporter | beqjanus | |||||||||
Assigned To | ||||||||||
Priority | normal | Severity | minor | Reproducibility | always | |||||
Status | new | Resolution | open | |||||||
Platform | Operating System | Operating System Version | ||||||||
Product Version | 0.9.0 | |||||||||
Target Version | Fixed in Version | |||||||||
Summary | 0008813: My Suitcase is broken due to invalid folder type specification. | |||||||||
Description | An older Mantis http://opensimulator.org/mantis/view.php?id=7868 [^] Goes around in circles and concludes that this is a viewer issue. It *mostly* is not. For while it manifests as a viewer not working properly, the problem is instigated by a misinformed choice. The problem is that OpenSim unilaterally chose a value of 100 for the "My Suitcase" folder type. This was chosen presumably to give plenty of room for future viewer expansions, not a bad premise. Sadly they overlooked the fact that a 64-bit mask is applied with each bit mapping to a folder type and thus the behaviour is unpredictable on all platforms. On the 64-bit intel viewer the code "luckily" generates an appropriate bit test that wraps giving a modulo 64 result of 36. Bit 36 happens to be present in the filter mask and works. Pure luck. On 32-bit intel viewer, the test evaluates to 0, a technically more correct result as the mask was 64 bits and thus could never be true. The correct solution is to use a folder that is in range and ensure that all the viewers are aware of this. However, this change was instigated in OpenSim 0.8.2 (http://opensimulator.org/wiki/0.8.2.0_Release [^]) | |||||||||
Steps To Reproduce | Get a 32-bit intel viewer, firestorm definitely, Dayturn would appear to according to other posts. Any viewer that has inventory filtering based on LL. go to a region running OS > 0.8.2 and implementing suitcase. The 32-bit viewer will not show it by default. Switch to 64 bit and it will (probably). In all cases forcing show, all folders in the inventory filters will show it as it bypasses the filter checks. | |||||||||
Additional Information | The issue occurs on the viewer because folders are expected to in held in an unsigned 64-bit mask. The viewer checks to see if the folder is eligible for display by a bitwise check. (1LL << cat_type & mFilterOps.mFilterCategoryTypes) == U64(0)) When cat_type > 64 all bets are off. | |||||||||
Tags | No tags attached. | |||||||||
Git Revision or version number | ||||||||||
Run Mode | Standalone (1 Region) , Standalone (Multiple Regions) , Grid (1 Region per Sim) , Grid (Multiple Regions per Sim) | |||||||||
Physics Engine | BulletSim | |||||||||
Script Engine | XEngine | |||||||||
Environment | Unknown | |||||||||
Mono Version | None | |||||||||
Viewer | ||||||||||
Attached Files | ||||||||||
![]() |
||||||
|
![]() |
|
(0037195) tampa (reporter) 2020-11-18 17:09 |
What would be a safe value for it? |
(0037196) UbitUmarov (administrator) 2020-11-18 17:18 |
this issue was introduced with viewers inventory filters. the direct use of folder type to create a bit mask is code that places limit of 63 to folder types, already at 56 on standard ll, more on tpvs but we do similar things, so can't complain about ll code now tpvs that support opensim is other thing that wiki is there since 0.8.2 release :) in fact the way that seems to work is fun, vs compiler is real nice doing optimization. as i shown Beq, the code (1LL << cat_type & mFilterOps.mFilterCategoryTypes) == U64(0)) corresponds, in 64b release mode to mov ecx,eax mov rax,qword ptr [rbx+30h] bt rax,rcx the module 64 comes from intel bt spec (bit test) in 64bit mode in 32bit, most likely a support library is called to do 64bit shifts and the result happens to hide suitcase other cpus. Who knows. seems we face another change of that value adding a lot of correction code.. can't do anything for older versions. lets see what viewer side can do. |
(0037197) beqjanus (reporter) 2020-11-18 17:27 |
The viewer filters pre-date this change (according to git the filter in question was added by Richard Linden 9 years ago) My suggestion for the short term is that I will add an explicit check for folder type 100. I will suggest this to other viewers too. This will resolve the issue of not showing but will force it to always show. To bring the folder type in range of the current filters (say 63) and allow future viewer UI control to optionally toggle it on and off would require additional code in all viewers while they'd still need to maintain legacy support for older regions. Not sure how much value there is in taking that path. Please keep in mind here, 64-bit viewer "happen" to work, lucky chance, by making it explicit we safeguard builds that might not generate lucky code. |
(0037198) beqjanus (reporter) 2020-11-18 19:03 |
Fix applied to Firestorm as https://vcs.firestormviewer.org/phoenix-firestorm/changeset/33629ee40a2b24cfbff1ad9bd04715a1427cd0b5 [^] |
(0037199) UbitUmarov (administrator) 2020-11-18 19:05 |
thanks for the hack Beq :) |
(0037204) Gavin Hird (reporter) 2020-11-19 06:40 edited on: 2020-11-19 06:45 |
That's brilliant Beq! New viewer builds are in the pipeline for later today. THANKS! (Ubit note: this means Dayturn viewer, for those who don't know Gavin is a dev of it) |
(0037218) Gavin Hird (reporter) 2020-11-19 11:31 |
New Dayturn Windows builds are available at https://www.dayturn.com/viewer/index.php?resources/ [^] Again, thanks to Beq! |
![]() |
|||
Date Modified | Username | Field | Change |
2020-11-18 16:58 | beqjanus | New Issue | |
2020-11-18 17:09 | tampa | Note Added: 0037195 | |
2020-11-18 17:18 | UbitUmarov | Note Added: 0037196 | |
2020-11-18 17:27 | beqjanus | Note Added: 0037197 | |
2020-11-18 19:03 | beqjanus | Note Added: 0037198 | |
2020-11-18 19:05 | UbitUmarov | Note Added: 0037199 | |
2020-11-19 04:33 | aiaustin | Relationship added | related to 0007868 |
2020-11-19 06:40 | Gavin Hird | Note Added: 0037204 | |
2020-11-19 06:44 | UbitUmarov | Note Edited: 0037204 | View Revisions |
2020-11-19 06:45 | UbitUmarov | Note Edited: 0037204 | View Revisions |
2020-11-19 06:45 | UbitUmarov | Note Edited: 0037204 | View Revisions |
2020-11-19 11:31 | Gavin Hird | Note Added: 0037218 |
Copyright © 2000 - 2012 MantisBT Group |