piroor / treestyletab

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

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

Closed trych closed 3 months ago

trych commented 5 months 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 5 months ago

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

trych commented 5 months 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 5 months ago

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

piroor commented 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months 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 5 months ago

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

sven337 commented 5 months 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 5 months ago

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

danielkza commented 5 months 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 5 months 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 5 months 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!

321MBT commented 5 months ago

@piroor

I am having the same issue with TST v4.0.19 after updating from FF 126 to FF 127.0.2, but:

I tried to get a startup log of TST v4.0.19 after I updated FF to v127.0.2 but something isn't working with iframes. I can't find the iframe picker button. See attached screenshots. When I run the debugger it auto loads "/background/background.html" iframe, so I was able to run the first script you shared but it errored out, and because the iframe icon isn't showing in my FF, I can't select the iframe "/sidebar/sidebar.html" to run the second script.

111111

2222222

321MBT commented 4 months ago

@piroor Did you see my post from two days ago? I'd like to help you track down the problem so I can continue using your excellent addon. v4.0.20 didn't fix the issue for me.

raccoonyy commented 4 months ago

4.0.20 Works for me! Thanks all you folks!

github-actions[bot] commented 4 months ago

This issue has been labeled as "stale" due to no response by the reporter within 1 month (and 7 days after last commented by someone). And it will be closed automatically 14 days later if not responded.

321MBT commented 4 months ago

This issue has been labeled as "stale" due to no response by the reporter within 1 month (and 7 days after last commented by someone). And it will be closed automatically 14 days later if not responded.

Refresh bump.

@piroor TST v4.0.20 still not working with FF 127.0.x on my system.

piroor commented 4 months ago

@321MBT The frame chooser button may be lost if you disable and re-enable TST with opened debugger window. Closing the debugger window and reopening it should take the frame chooser button back again. Could you try that?

321MBT commented 3 months ago

@piroor

@321MBT The frame chooser button may be lost if you disable and re-enable TST with opened debugger window. Closing the debugger window and reopening it should take the frame chooser button back again. Could you try that?

That worked, thank you.

I had to create a few VMs so I could test different iterations of TST and FF versions. So, later today I will share the log with TST 4.0.19 and FF 127.

Last night I re-tested TST 4.0.20 with FF 127:

However, this is what I find most interesting:

Last night I downloaded the beta (129.x) and nightly (130.x) releases for offline installation to see if they also break with TST 4.0.20.

So far, and at this point, it looks like the issue is present when installing FF 127 with TST ≤4.0.20 but not FF 129. Or maybe the issue I'm experiencing is due to online vs offline installation because my FF isn't running when I update from a local .exe.

Tonight, using offline installers, I will test FF versions 127, 128, and 130, using FF 126.x with TST 4.0.19 as the starting point.

I will collect the logs you requested for each test irritation and share those that seem relevant or that you want to see.

github-actions[bot] commented 3 months ago

This issue has been labeled as "stale" due to no response by the reporter within 1 month (and 7 days after last commented by someone). And it will be closed automatically 14 days later if not responded.

github-actions[bot] commented 3 months ago

This issue has been closed due to no response within 14 days after labeled as "stale", 7 days after last reopened, and 7 days after last commented.