Reason why Sketchup 8 may crash
-
@dave r said:
So I wonder what's different between your installation and mine. Is it an operating system thing or could it be somehow caused by a script?
It could be several causes. In my case I think it's related to script loading errors - and since I can easily get such errors while developing it is one of the causes which I ran into.
I think Jim has found some other triggers. -
I know it could be made as a reg or cmd file but currently I manually export the Sketchup HCU registry entry and make a copy of that reg file.
Then I edit the copy with Notepad++ to remove all of the Toolbar entries - which are in a 'block'.
I then delete the original registry entry and reload the edited reg file that no longer has any toolbar entries.
When Sketchup first restarts all toolbars are removed and need resetting / saving...
The original exported version is my insurance policy in case I mess up...
Sketchup then loads so much faster after the cleanup as it's hundreds of toolbar entries lighter !
Whenever you save the toolbar settings it seems to duplicate a set... Sketchup should purge its toolbar registry entries but it doesn't... -
@dave r said:
Is there a way to identify which registry entry belongs to which toolbar? I just had a look at the registry on my computer here at work. It shows ToolbarsUser-Bar0 through ToolbarsUser-Bar55 and then ToolbarsUserCustom-Bar0 through ToolbarsUserCustom-Bar53. There seem to be only 43 toolbars in the list under View>Toolbars so I think some of these registry entries probably aren't needed.
Key HKCU\Software\Google\Sketchup8\ToolBarsUserCustom-Summary\Bars
same goes for the ToolbarsUser-Bar# -
@kachupp said:
4nt batch script to fix
do r=0 to 2000
if %@regexist[HKCU\Software\Google\Sketchup8\ToolbarsUser-Bar%r] == 1 set _C=%@regdelkey[HKCU\Software\Google\Sketchup8\ToolbarsUser-Bar%r]
if %@regexist[HKCU\Software\Google\Sketchup8\ToolbarsUserCustom-Bar%r] == 1 set _C=%@regdelkey[HKCU\Software\Google\Sketchup8\ToolbarsUserCustom-Bar%r]
enddoif statements are ONELiners
I know ya'll are ruby fans but the above 4nt/tcmd batch script removes all ToolBars-User/Custom registry keys
"if key exist then del registry key"
It has the effect of returning the GUI to Day 1 standard getting started toolbars -
@kachupp said:
@dave r said:
Is there a way to identify which registry entry belongs to which toolbar? I just had a look at the registry on my computer here at work. It shows ToolbarsUser-Bar0 through ToolbarsUser-Bar55 and then ToolbarsUserCustom-Bar0 through ToolbarsUserCustom-Bar53. There seem to be only 43 toolbars in the list under View>Toolbars so I think some of these registry entries probably aren't needed.
Key HKCU\Software\Google\Sketchup8\ToolBarsUserCustom-Summary\Bars
same goes for the ToolbarsUser-Bar#That doesn't appear to list which toolbars are given what number which is what I was asking for.
-
@dave r said:
@kachupp said:
@dave r said:
Is there a way to identify which registry entry belongs to which toolbar? I just had a look at the registry on my computer here at work. It shows ToolbarsUser-Bar0 through ToolbarsUser-Bar55 and then ToolbarsUserCustom-Bar0 through ToolbarsUserCustom-Bar53. There seem to be only 43 toolbars in the list under View>Toolbars so I think some of these registry entries probably aren't needed.
Key HKCU\Software\Google\Sketchup8\ToolBarsUserCustom-Summary\Bars
same goes for the ToolbarsUser-Bar#That doesn't appear to list which toolbars are given what number which is what I was asking for.
What it tells you is the number REG_DWORD HEX (DECIMAL) the number of valid toolbars so if your registry tells you
you have 55 then you have 55 if its says 55 but 45 is the highest number of ToolBarsUser/Custom-Bar# entries then
the last ten are invalid .. They will be empty if its truely invalid -
SUReset.CMD
REG EXPORT HKCU\Software\Google UPDATE.REG
REG DELETE HKCU\Software\Google /va /f
: Create Backup Restore Google Sketchup8 to DayOne
-
@kachupp said:
SUReset.CMD
REG EXPORT HKCU\Software\Google UPDATE.REG
REG DELETE HKCU\Software\Google /va /f
: Create Backup Restore Google Sketchup8 to DayOne
Has any one CONFIRMED this works ? other than my self
-
The problem with all of ths Registry hacking is that it brings us full circle back to where we were BEFORE Google 'fixed' the toolbar issue. Pre v8 you simply has a cmd script that backed up the full SUp v8 registry entry which had the toolbars set as you wanted. When everything went wrong you ran another cmd file that erased and immediately replaced the Registry entry with the 'good' one...
Surely the fixed v8 code needs to keep proper track of the changes it's making to the Registry and purge the redundant parts - we should NOT be having to do this ourselves - otherwise it's not much of an improvement
-
@tig said:
Surely the fixed v8 code needs to keep proper track of the changes it's making to the Registry and purge the redundant parts - we should NOT be having to do this ourselves - otherwise it's not much of an improvement
I disagree because of the registry hack; The problems donโt exist when the dodgy registry entries donโt exist. DayOne!
Which makes me think itโs an introduced problem ala plug-ins. They โGoogleโ didnโt think for one minute it couldnโt be abused. -
@kachupp said:
@tig said:
Surely the fixed v8 code needs to keep proper track of the changes it's making to the Registry and purge the redundant parts - we should NOT be having to do this ourselves - otherwise it's not much of an improvement
I disagree because of the registry hack; The problems donโt exist when the dodgy registry entries donโt exist. DayOne!
Which makes me think itโs an introduced problem ala plug-ins. They โGoogleโ didnโt think for one minute it couldnโt be abused.It seems that plugin loading errors might throws things out of state.
I think Jim maybe found something in regard to enabling/disabling extensions. -
I am having serious issues with Skethcup crashing. Last night I had a total of 23 crashes. Of all versions of Sketchup, version 8 is by far the most buggy. I can do some of the same things in an older version and no crashes... My crashes usually occur while using Sketchy Physics. It gets extremely frustrating while in the middle of making a model and BAM!!! Crash!
I make very complex Sketchy Physics models using all kinds of joints and literaly hundreds of grouped objects. I do understand that having such complex models broadens the way for more and more crashes and more often. But as I said I have made similar models in older versions of Sketchup and Physics with little to no crashes.
-
I have a new Batch file (BTM 4nt/tcc only) solution.
: # Programmatically simplified description of what the batch file does.
: #
: # add default loop variable or user specified
: # make sure variable is numeric if not display error and quit
: #
: # display task
: #
: # start loop
: # hit anykey to cancel loop and batch file.
: #
: # if the registry key exist .and. the registry entry does not have the required key BarID
: # delete the registry entry (per :ToolBar_Label)
: #
: # show loop counter
: # loop
: # endloop
: #
: # display valid #COUNT entries
: # clean up environment
: # end batch file.Extract and open the batch file in any text editor. Read the notes!
-
This tool requires a not inexpensive 3rd-party add-on to Windows to be usable...
Can't it be done in a normal cmd/bat format ? -
-
OK.
That's not so bad.
Might have been a good idea to explain that in the original post though
AND it's limited to 'home use'... -
Reading your code it doesn't seem to overcome the ever growing list of Toolbar entries which are made from unused entries as a new toolbar arrangement is saved and supersedes the current one. This is what slows SketchUp's startup as all of the entries are read - even those that are subsequently unused...
For that you probably need to remove all toolbar entries with duplicate BarID values, but how do you decide which is the more current to retain? The highest ...BarN might work, but then because there are holes in the numbering do newly made ones with the same BarID fill the gaps to confuse the next use of this cleanup tool, or could you perhaps remake the lone BarID entry with the most recent values using oldest number [lowest] of BarN and erase the other higher numbered exact duplicate version ?
This gets us into a terrible tangle as several entries seem to refer to one another, so it'd be all too easy to cross-thread the Registry ! Aaargh! -
@tig said:
Reading your code it doesn't seem to overcome the ever growing list of Toolbar entries which are made from unused entries as a new toolbar arrangement is saved and supersedes the current one. This is what slows SketchUp's startup as all of the entries are read - even those that are subsequently unused...
For that you probably need to remove all toolbar entries with duplicate BarID values, but how do you decide which is the more current to retain? The highest ...BarN might work, but then because there are holes in the numbering do newly made ones with the same BarID fill the gaps to confuse the next use of this cleanup tool, or could you perhaps remake the lone BarID entry with the most recent values using oldest number [lowest] of BarN and erase the other higher numbered exact duplicate version ?
This gets us into a terrible tangle as several entries seem to refer to one another, so it'd be all too easy to cross-thread the Registry ! Aaargh!Hi TIG
What I am finding is that Getting Started and Large Tool Sets are some of the duplicated BarID values you mentioned. SU doesnโt add the BarName value to its own making it a little more tedious to sort through manually. Its either visible or not 0/1
Will look into more on the weekend
This is what I got so far
ToolbarsUser-Bar0 = Standard
ToolbarsUser-Bar1 = Principal
ToolbarsUser-Bar2 = Camera
ToolbarsUser-Bar3 = Drawing
ToolbarsUser-Bar4 = Modification
ToolbarsUser-Bar5 = Construction
ToolbarsUser-Bar6 = Solid Tools
ToolbarsUser-Bar7 = Walkthrough
ToolbarsUser-Bar8 = Styles
ToolbarsUser-Bar9 = Views
ToolbarsUser-Bar10=Sections
ToolbarsUser-Bar11=Large Tool Set
ToolbarsUser-Bar12=Google
ToolbarsUser-Bar13=Getting Started
ToolbarsUser-Bar14= UNKNOWN
ToolbarsUser-Bar15=Shadows
ToolbarsUser-Bar16=Layers
ToolbarsUser-Bar17=Measurements
ToolbarsUser-Bar18= UNKNOWN
ToolbarsUser-Bar19= UNKNOWN
ToolbarsUser-Bar20= UNKNOWN
ToolbarsUser-Bar21= UNKNOWN possible toggles for menu itemsValues after Bar21 are allocated to Plugins "BarName"
These unknowns maybe Menu item toggles -
My findings
The ToolbarUserCustom-bars appear to be backups of ToolbarsUser keys changing only x & y pos if moved.
The mess in the registry is made by users trying different plugins then adbondoning the plugins because it may not be what they are after these remanences have no way of cleaning them selfs up. -
Absolute confirm on this - went from about a minute to launch to a second or two.
If you have python installed on your system, here's the script I used to remove the keys:
Usage: (all values have reasonable defaults, so just executing the script is fine)$ clean_sketchup_reg.py -h usage; clean_sketchup_reg.py [-h] [--path PATH] [--root ROOT] [--pattern PATTERN] [--verbose VERBOSE] Sketchup Toolbar cleaner optional arguments; -h, --help show this help message and exit --path PATH registry path --root ROOT root key --pattern PATTERN remove pattern --verbose VERBOSE verbosity
Code:
import _winreg as reg import re import sys import argparse def get_root_key(name); try; key = getattr(reg, name) return key except KeyError; pass raise ValueError('Root Key "%s" was not found' % name) class Cleaner(object); def __init__(self, root, path, pattern); self.root = reg.ConnectRegistry(None, root) self.set_path(path) self.pattern = pattern def set_path(self, path); current = self.root for p in path.split('/'); current = reg.OpenKey(current, p) self.active_path = current def clean(self, print_errors=False); removed = 0 index = 0 while True; try; key = reg.EnumKey(self.active_path, index) if self.pattern.match(key); try; reg.DeleteKey(self.active_path, key) removed += 1 except WindowsError, e; index += 1 if print_errors; print 'Failed to remove', key, ';', e.message else; index += 1 except WindowsError, e; return removed if __name__ == '__main__'; parser = argparse.ArgumentParser(description='Sketchup Toolbar cleaner') parser.add_argument('--path', type=str, help='registry path', default='Software/Google/Sketchup8') parser.add_argument('--root', type=str, help='root key', default='HKEY_CURRENT_USER') parser.add_argument('--pattern', type=str, help='remove pattern', default='^ToolbarsUser(Custom)?\-Bar\d+$') parser.add_argument('--verbose', type=int, help='verbosity', default=1) args = parser.parse_args(sys.argv[1;]) root = get_root_key(args.root) path = args.path try; pattern = re.compile(args.pattern) except Exception, e; raise ValueError('Invalid pattern ; ' + e.message) cleaner = Cleaner(root, path, pattern) result = cleaner.clean(args.verbose >= 2) if args.verbose >= 1; print 'removed', result, 'keys'
Edit: Obligatory disclaimer, use at your own risk. I've tested it on my system and found no issues.
You can also use this script to clean webdialog entries:
clean_sketchup_reg.py --pattern "^WebDialog_.*$"
Advertisement