piroor / treestyletab

Tree Style Tab, Show tabs like a tree.
http://piro.sakura.ne.jp/xul/treestyletab/
Other
3.41k stars 276 forks source link

[Bug] 4.0.17 completely breaks TST, tabs are not visible anymore #3576

Open trych opened 3 weeks ago

trych commented 3 weeks ago

Abstract

My Firefox just auto-updated to 4.0.17 today and when I restarted Firefox, I see the loading animation forever on all the windows I have open and no tabs will open.

Steps to reproduce

Open Firefox. Then I already see the loading animation.

20240612-165230_Screenshot_Firefox

Expected result

The tabs should show.

Actual result

The tabs do not show. The loading animation shows forever on each window. I can open and close tabs via shortcuts, but I cannot see any of the tabs.

When I go to the console of the add-on it shows me this, not sure if it is related.

Bildschirmfoto 2024-06-12 um 16 55 30

Environment

Thanks for looking into this!

piroor commented 3 weeks ago

Does this still happen, after disabling and re-enabling TST?

trych commented 3 weeks ago

Yes, unfortunately. It also happened after uninstalling and re-installing TST. I now had to downgrade to get it to work again, otherwise FF was unusable for me.

Florepic commented 2 weeks ago

I have the same issue with 4.0.18, Firefox 126.0 (OS: Ubuntu)

piroor commented 1 week ago

Ah, I meant: Disabling and re-enabling TST reloads TST's scripts totally. If the problem is a timing issue, it can be a workaround without downgrading of TST, and we'll be able to investigate its initialization process to avoid such a timing issue.

On the other hand, if such a reloading does not solve the problem and you really need to downgrade TST, we'll need to investigate difference between the latest version and the available version.

So I hoped that you try the reloading before downgrading.

Florepic commented 1 week ago

Disabling it did not work, however uninstalling it and restarting Firefox, then re-installing it did the trick. I don't know what the issue was at all though.

trych commented 1 week ago

For me neither disabling nor reloading did work. I am not sure if I specifically tried uninstalling it, restarting FF and then re-installing it.

Ogwalla commented 1 week ago

I, too, am having this issue, version 4.0.18, Firefox 127.0.1 (64-bit) Windows 10 Pro. I disabled and re-enabled the plugin and did not resolve the issue.

raccoonyy commented 1 week ago

Me neither disabling nor reloading did work even after FF restart or reinstall TST. TST 4.0.18, Firefox 127.0.2 (64-bit), macOS Sonoma 14.5.

cloudrac3r commented 1 week ago

I have the same problem on TST 4.0.18, Firefox 127.0.2, Windows 11. It did not help to disable and enable TST. The only way I could make it work was to back up my config, uninstall TST, and install 4.0.15 from AMO. The old version is working for me.

piroor commented 1 week ago

4.0.17 contains only fixes for regressions on 4.0.16, so this looks to be an issue caused by something changes at 4.0.16 and later. Changes at 4.0.16 are: https://github.com/piroor/treestyletab/compare/4.0.15...4.0.16 Hmm, which change triggers this issue?

piroor commented 1 week ago

Could you post detailed startup log of TST? Steps:

  1. Start your Firefox with TST 4.0.17 and later. The latest version 4.0.19 is the best choice for debugging.
  2. Confirm that TST failed to initialize.
  3. Go to about:debugging
  4. Click "This Firefox" in the left sidebar.
  5. Click "Inspect" button of the Tree Style Tab item in the list of extensions.
  6. A debugger window is opened.
  7. Click iframe chooser icon and choose "/background/background.html".
    image
  8. Choose "Console".
  9. Run a script: import('/common/MetricsData.js').then(ns =>console.log(ns.default.toString()))
  10. Collect the output.
  11. Click iframe chooser icon and choose "/sidebar/sidebar.html".
  12. Run a script: import('/common/MetricsData.js').then(ns =>console.log(ns.default.toString()))
  13. Collect the output.

Here is my case on background.html:

total 4427541 msec
950: index: Loaded
133: init: start
325: (async) waitUntilCompletelyRestored: existing tabs 
515: (async) waitUntilCompletelyRestored: opening tabs 
718: (async) init: waiting for waitUntilCompletelyRestored, ContextualIdentities.init and configs.$loaded
720: init: prepare
17: init: Migration.migrateConfigs
81: (async) init: getting all tabs across windows
646: restoreWindowFromEffectiveWindowCache: start
34: restoreWindowFromEffectiveWindowCache: start
20: restoreWindowFromEffectiveWindowCache: start
1386: (async) restoreWindowFromEffectiveWindowCache: window cache
1416: restoreWindowFromEffectiveWindowCache: validity check: start
1: restoreWindowFromEffectiveWindowCache: validity check: signature passed.
0: restoreWindowFromEffectiveWindowCache: validity check: matching actual signature of got cache
6: restoreWindowFromEffectiveWindowCache: validity check: actual signature failed.
1472: (async) rebuildAll: restore tabs in window 1 from cache
2772: (async) rebuildAll: tabs in window 1
2840: (async) restoreWindowFromEffectiveWindowCache: window cache
1414: restoreWindowFromEffectiveWindowCache: validity check: start
2: restoreWindowFromEffectiveWindowCache: validity check: signature passed.
0: restoreWindowFromEffectiveWindowCache: validity check: matching actual signature of got cache
2: restoreWindowFromEffectiveWindowCache: validity check: actual signature passed.
49: (async) restoreWindowFromEffectiveWindowCache: permanentStatus
49: restoreTabsFromCacheInternal: start
1: fixupTabsRestoredFromCache: start
2969: (async) rebuildAll: tabs in window 26
2950: (async) restoreWindowFromEffectiveWindowCache: window cache
61: restoreWindowFromEffectiveWindowCache: validity check: start
0: restoreWindowFromEffectiveWindowCache: validity check: signature passed.
0: restoreWindowFromEffectiveWindowCache: validity check: matching actual signature of got cache
1: restoreWindowFromEffectiveWindowCache: validity check: actual signature passed.
32: (async) restoreWindowFromEffectiveWindowCache: permanentStatus
32: restoreTabsFromCacheInternal: start
0: fixupTabsRestoredFromCache: start
0: fixupTabsRestoredFromCache: step 1 done.
3: fixupTabsRestoredFromCache: step 2 done.
0: (async) rebuildAll: fixupTabsRestoredFromCache
0: (async) restoreWindowFromEffectiveWindowCache: restoreTabsFromCache
0: restoreWindowFromEffectiveWindowCache: window 28 succeeded
2987: (async) rebuildAll: restore tabs in window 28 from cache
3003: (async) rebuildAll: tabs in window 28
2987: (async) init: rebuildAll
2: loadTreeStructure: start
42: loadTreeStructure: read stored data
0: loadTreeStructure: no valid structure information
0: loadTreeStructure: fallback to reserveToAttachTabFromRestoredInfo
9: loadTreeStructure: read stored data
0: applyTreeStructureToTabs: start
0: applyTreeStructureToTabs: preparation
69: applyTreeStructureToTabs: attach/detach
10: applyTreeStructureToTabs: collapse/expand
0: loadTreeStructure: Tree.applyTreeStructureToTabs
4135: loadTreeStructure: attachTabFromRestoredInfo finish
144: loadTreeStructure: finish to fixup tree structure
4403: (async) loadTreeStructure: restoration for windows
4402: (async) init: TreeStructure.loadTreeStructure
5: init: started listening
225: init: started initializing of context menu
1014: (async) init: exporting tabs to sidebars
1938: (async) init: initializing API for other addons
4417387: applyTreeStructureToTabs: start
0: applyTreeStructureToTabs: preparation
4: applyTreeStructureToTabs: attach/detach
1: applyTreeStructureToTabs: collapse/expand

and the one on sidebar.html:

total 5564 msec
41: Loaded
425: init: start
178: (async) getting window
13: (async) tracking all native tabs
196: (async) getting native tabs
4232: browser.tabs.query finish, configs are loaded.
22: (async) promisedAllTabsTracked
641: (async) importTabsFromBackground: kCOMMAND_PING_TO_BACKGROUND
641: (async) importTabsFromBackground()
645: rebuildAll: start
38: rebuildAll: end (from scratch)
28: (async) parallel initialization: main: rebuildAll
28: (async) parallel initialization: Size
11: (async) parallel initialization: TabContextMenu
32: mouse-event-listener: Sidebar.onBuilt: apply configs
21: (async) parallel initialization: contextual identities
107: (async) parallel initialization: main
107: (async) parallel initialization: post process: main
3: (async) parallel initialization: post process: Scroll.init
3: (async) parallel initialization: post process
151: init: end
3429: (async) API for other addons

Collected logs may be shorter than these success cases, if something happens while TST's initialization, and it may help to understand where TST was failed at.

Ogwalla commented 1 week ago

background.html:

total 19771 msec
52: index: Loaded
9: init: start
3011: (async) waitUntilCompletelyRestored: opening tabs 
7393: (async) waitUntilCompletelyRestored: existing tabs 
12804: (async) init: waiting for waitUntilCompletelyRestored, ContextualIdentities.init and configs.$loaded
12804: init: prepare
1: init: Migration.migrateConfigs
1588: (async) init: getting all tabs across windows
1624: restoreWindowFromEffectiveWindowCache: start
1418: restoreWindowFromEffectiveWindowCache: start
3182: (async) restoreWindowFromEffectiveWindowCache: window cache
1772: restoreWindowFromEffectiveWindowCache: validity check: start
0: restoreWindowFromEffectiveWindowCache: validity check: signature passed.
0: restoreWindowFromEffectiveWindowCache: validity check: matching actual signature of got cache
1: restoreWindowFromEffectiveWindowCache: validity check: actual signature passed.
2038: (async) restoreWindowFromEffectiveWindowCache: permanentStatus
2038: restoreTabsFromCacheInternal: start
0: fixupTabsRestoredFromCache: start
1: fixupTabsRestoredFromCache: step 1 done.
47: fixupTabsRestoredFromCache: step 2 done.
3: (async) rebuildAll: fixupTabsRestoredFromCache
4: (async) restoreWindowFromEffectiveWindowCache: restoreTabsFromCache
4: restoreWindowFromEffectiveWindowCache: window 1 succeeded
5282: (async) rebuildAll: restore tabs in window 1 from cache
5318: (async) rebuildAll: tabs in window 1 debugger eval code:1:52

sidebar.html:

total 979 msec
8: Loaded
8: init: start
910: (async) getting window
33: (async) tracking all native tabs
945: (async) getting native tabs
963: browser.tabs.query finish, configs are loaded.
3: (async) promisedAllTabsTracked
209: (async) importTabsFromBackground: kCOMMAND_PING_TO_BACKGROUND debugger eval code:1:52
piroor commented 1 week ago

@Ogwalla Thanks! Your log says:

I didn't imagine such a trouble happens around IndexedDB. I'm planning to add something custom timeout mechanism.

piroor commented 1 week ago

I've introduced error handling (8a056ad5a) and a timeout mechanism for such case (b2cc3f9). TST will give up restoration of tree information from cache if it explicitly failed or it took over 5 seconds.

piroor commented 1 week ago

I need more help from other cases - IndexedDB problem may be just one of reasons.

sven337 commented 1 week ago

As requested, logs for my failure case. Firefox 127.0.2 on Linux with TST 4.0.19.

background.html:
total 14013 msec
47: index: Loaded
24: init: start
500: (async) waitUntilCompletelyRestored: opening tabs
1226: (async) waitUntilCompletelyRestored: existing tabs
13926: (async) init: waiting for waitUntilCompletelyRestored, ContextualIdentities.init and configs.$loaded
13926: init: prepare
1: init: Migration.migrateConfigs
0: (async) init: getting all tabs across windows
15: restoreWindowFromEffectiveWindowCache: start

sidebar.html:
total 36 msec
5: Loaded
4: init: start
23: (async) getting window
1: (async) tracking all native tabs
25: (async) getting native tabs
27: browser.tabs.query finish, configs are loaded.
1: (async) promisedAllTabsTracked
2: (async) importTabsFromBackground: kCOMMAND_PING_TO_BACKGROUND
piroor commented 1 week ago

@sven337 Thanks! Your case also looks caused by errors around IndexedDB requests, so recent changes should fix it.

danielkza commented 1 week ago

Is the fix to be released in 4.0.20? I don't see it in AMO yet, is it waiting for approval?

edit: the only solution to the problem for me, for now, was to disable tab caching completely

D3SOX commented 1 week ago

Yes 4.0.20 fixes it for me.

I'm not sure if AMO approves addons on the weekend so my current solution is to download the version from https://github.com/piroor/treestyletab/actions/runs/9708286338 (You can use this nightly.link if you don't have GH account), extract the XPI and load it temporarily by selecting it after clicking the "Load temporary addon..." button on about:debugging#/runtime/this-firefox

Keep in mind that you have to do this after every restart until the new version has been approved

sven337 commented 1 week ago

Thanks for the trick for loading 4.0.20. It works, and I confirm the problem is fixed for me also. @piroor thank you so much!

raccoonyy commented 2 days ago

4.0.20 Works for me! Thanks all you folks!