Classic Shell

A Hypothesis re: the "Blank/White icons in Start Menu" issue
Page 1 of 1

Author:  CLBrown [ Tue Jun 23, 2020 8:14 am ]
Post subject:  A Hypothesis re: the "Blank/White icons in Start Menu" issue

Hi Guys,

Yeah, I know... "Classic Shell" is "retired," and there's now a new offshoot called "Open Shell." I'm going to pose my question in both locations, to get maximum exposure.

My problem is one which a fair number of users have experienced, it seems. The "White Icons in Start Menu."

I am 99% sure I know what the general basis of this is, and would like to confirm that others here (or in the Open Shell forums) see the same thing.

For me, Classic Shell (or Open Shell) work fine, as long as my Start Menu is fairly brief. The "Blank/white icons" issue (and some other corruption issues as well) comes up once my Start Menu gets to a certain size range.

Now, I have a BIG start menu structure, heavily nested. I've been using the same overall start menu structure (which is not the "Microsoft Default" from ANY era of Windows) for decades now.

The first tier starts off with major software categories. My major categories are "Accessories," "Audio and Video," "Communication," "Productivity," "Recreation," "Reference," and "Startup."

Within each, there is a second tier of subcategories. For example, under "Communication," I have "Browsers and Services," "Cell Phone Utilities," "Communication Utilities," "Phone and Chat," and "Terminal and Fax."

This continues to "dig down" until I get to the individual program in question, which itself has a main entry at the top (the one I run the program from), plus (at a minimum) a "Docs and Links" folder and a "Utilities" folder inside of it. Often, I'll also have a "Media" folder where I can review the box art, non-text scans of provided docs (say, in-game maps), etc, from.

It's VERY efficient (for me) and I'm largely "hard-wired" to work this way now. And yes, it's utterly antithetical to Microsoft's current "How Do We Want You To Work For Us Today?" mindset.

But, it does result a a LOT of shortcuts within this heavily tiered start menu structure. Thousands of shortcuts. In my case, my start menu is 262MB, and contains 13,007 folders and 33,319 files (with likely 95% of those being shortcuts, and the remainder being folder *.ini files and the like).

I STRONGLY suspect that this is what "Classic Shell" (and "Open Shell") "barfs" over. Once it gets to a certain size of what I assume is an internal database (of icons, etc) it hits some sort of hard-coded limitation, and suddenly cannot display ANY icons (in the start menu).

Here's the thing. I USED to be a pretty decent coder. IN THE 1980s. My skills, today, are so far out of date that it's laughable. I can write pseudo-code very effectively, and could still write FORTRAN and COBOL and FORTH and BASIC and even TMS Assembly code, today... if there were anything running those. I've toyed around with Ruby and C++ and Java... but these don't even feel like "coding" to me... more like "sticking various pieces of pre-written code together and seeing if they work." I'm not really suited to today's "programming" world.

So, I'm a bit at a loss as how to even determine what "size limitations" Classic Shell/Open Shell have, or why those exist. It seems odd to me that ANY such size limitation would exist (none exists in Windows proper, after all) but most likely, some pre-existing piece of code which makes up this program has a limitatation... possibly one no one working on the current code base is even aware of! Some "module" was created by someone who assumed, say, "a data size above this is as big as anyone would ever need," and then that code got reused years later without real thought into revisiting that code's assumptions.

33,319 (my file count in the start menu), converted to binary, is 1000001000100111. That's 16 bits.

I suspect that the issue here is that the database size is limited. If the database were limited to 16 bits... where the largest value is 1111111111111111, which in decimal is 65,535... this would not be an issue. OLD Windows used 16 bits to do this, and modern windows uses 32 bits to do this.

But if this were, say, a 12-bit database... which isn't as odd as you may think... the maximum entry count would be 4,095. If it's a 15-bit database... using the extra bit in the 16-bit word as a status flag or something along those lines... 32,767 entries.

And that's around where my Classic Shell/Open Shell start menu icons become "white squares" rather than icons, and when the program, in general, starts to misbehave.

So, I suspect that we're talking about a 15-bit addressing scheme of some sort.

The problem is, again, I have no idea where in the code this might be located.

And I'm handing this off to anyone who knows enough about "modern" coding to potentially look into the issue.

Because, as of today, "Classic Shell" and "Open Shell" have become useless to me. Not simply due to the missing icons (which I could live with) but the crashes which seem to derive from this issue as well. I could reduce my start menu structure... but I don't want to do that. I want to use my computer how >I< want to use it, not how someone else tells me I'm "supposed" to use it.

That's why I started using Classic Shell in the first place, after all!

So... anyone else have similar experiences? Anyone have any clue how to see if this hypothesis has any bearing in reality?

Page 1 of 1 All times are UTC - 8 hours [ DST ]
Powered by phpBB® Forum Software © phpBB Group