open-webui
open-webui copied to clipboard
bug: Uncaught (in promise) TypeErrors and Page Freezing when Switching between Cloned Chats with Multiple LLMs
Bug Report
Installation Method
Docker Desktop via a custom-built docker-compose.yml file for my Open WebUI instance and domains. Ollama is running natively on Windows via the Windows (Preview) version.
Environment
- Open WebUI Version: v0.3.11 (and a few versions prior, but the bug has gone unreported before then)
- Ollama (if applicable): v0.3.3
- Operating System: Windows 11 Pro Insider Preview (Edition) - Version: 24H2 - Installed on: May 19, 2024 - OS build: 26120.770 - Experience: Windows Feature Experience Pack 1000.26100.6.0
- Browser: Firefox v128.0.3 (64-bit)
Confirmation:
- [x] I have read and followed all the instructions provided in the README.md.
- [x] I am on the latest version of both Open WebUI and Ollama.
- [x] I have included the browser console logs.
- [x] I have included the Docker container logs.
Expected Behavior:
- The page should not freeze, and no errors should be logged to the console when switching between cloned chats.
Actual Behavior:
- The page freezes, and an error is logged to the console when switching from the cloned chat back to the initial chat directly.
Description
Bug Summary:
- Interacting with 2 or more LLMs within chats in Open WebUI causes errors and page freezing when switching between cloned chats, resulting in multiple
Uncaught (in promise) TypeErrorsbeing logged to the console.
Reproduction Details
Steps to Reproduce:
- Open the browser's debug console (F12) and keep it open for the duration of the steps to reproduce. This can be done at the beginning of the steps or just before the error is expected to occur at step 10 and be observed at step 11.
- Create a new chat
- Select an LLM and press the
+button to add a new model - Select a 2nd model
- Send a single query to both models in the chat
- Wait for both models to respond completely.
- Clone the chat after the chat has been given a title.
- Swap over to the cloned chat now.
- Regenerate the 1st model's response (based on the model dropdown selector, models from top to bottom are sorted from left to right) in the cloned chat.
- Navigate back to the initial/main chat.
- Error should be logged to console.
Browser Console Logs:
16:58:10.351 Uncaught (in promise) TypeError: t[0].messages[t[11]] is undefined
p CompareMessages.svelte:111
p CompareMessages.svelte:105
p CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
rt Chat.svelte:325
update Chat.svelte:131
update Chat.svelte:139
at scheduler.js:115
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
_start_router client.js:1603
c rocket-loader.min.js:1
CompareMessages.svelte:111:65
ut scheduler.js:86
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
rt Chat.svelte:325
InterpretGeneratorResume self-hosted:1417
AsyncFunctionNext self-hosted:804
(Async: async)
update Chat.svelte:131
update Chat.svelte:139
at scheduler.js:115
ut scheduler.js:79
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
InterpretGeneratorResume self-hosted:1417
AsyncFunctionNext self-hosted:804
(Async: async)
_start_router client.js:1603
c rocket-loader.min.js:1
Screenshots/Screen Recordings:
Video: https://streamable.com/m1s4zr
Secondary Issue
If you continue beyond the initial steps to produce the bug, you may encounter additional errors. To reproduce:
- Press the edit button in the problematic chat
- 2 more errors will present themselves in the browser console:
Browser Console Logs (Secondary Issue):
17:18:56.710 Uncaught TypeError: U is undefined
$ CompareMessages.svelte:117
d CompareMessages.svelte:137
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
St dom.js:361
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
promise callback*ct/</a< root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
_start_router client.js:1603
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
promise callback* 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
CompareMessages.svelte:117:31
$ CompareMessages.svelte:117
d CompareMessages.svelte:137
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
St dom.js:361
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
(Async: promise callback)
a root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
AsyncFunctionNext self-hosted:804
(Async: async)
_start_router client.js:1603
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
(Async: promise callback)
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply self-hosted:2289
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
and
17:18:56.762 Uncaught (in promise) TypeError: d is undefined
ce ResponseMessage.svelte:307
Kt ResponseMessage.svelte:652
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
St dom.js:361
m ResponseMessage.svelte:667
m Tooltip.svelte:46
_t Component.js:44
m ResponseMessage.svelte:646
m ResponseMessage.svelte:866
m ResponseMessage.svelte:1026
m ResponseMessage.svelte:1029
m ResponseMessage.svelte:582
m ResponseMessage.svelte:376
_t Component.js:44
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
promise callback*ct/</a< root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
_start_router client.js:1603
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
promise callback* 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
ResponseMessage.svelte:307:2
ce ResponseMessage.svelte:307
Kt ResponseMessage.svelte:652
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
St dom.js:361
m ResponseMessage.svelte:667
m Tooltip.svelte:46
_t Component.js:44
m ResponseMessage.svelte:646
m ResponseMessage.svelte:866
m ResponseMessage.svelte:1026
m ResponseMessage.svelte:1029
m ResponseMessage.svelte:582
m ResponseMessage.svelte:376
_t Component.js:44
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
(Async: promise callback)
a root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
AsyncFunctionNext self-hosted:804
(Async: async)
_start_router client.js:1603
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
(Async: promise callback)
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply self-hosted:2289
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
(Async: EventListener.handleEvent)
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
Screenshots/Screen Recordings:
Here's a visual of what I mean by this: https://streamable.com/qpv39f
2nd Secondary Issue
If you continue beyond the initial steps to produce the bug, you may encounter additional errors. To reproduce:
- Press the
Good Responsebutton in the problematic chat - 2 more errors will present themselves in the browser console:
Browser Console Logs (2nd Secondary Issue):
17:30:40.866 Uncaught TypeError: d is undefined
it ResponseMessage.svelte:876
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
St dom.js:361
m ResponseMessage.svelte:897
m Tooltip.svelte:46
_t Component.js:44
m ResponseMessage.svelte:936
m ResponseMessage.svelte:866
m ResponseMessage.svelte:1026
m ResponseMessage.svelte:1029
m ResponseMessage.svelte:582
m ResponseMessage.svelte:376
_t Component.js:44
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
promise callback*ct/</a< root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
_start_router client.js:1603
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
promise callback* 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
ResponseMessage.svelte:876:24
it ResponseMessage.svelte:876
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
St dom.js:361
m ResponseMessage.svelte:897
m Tooltip.svelte:46
_t Component.js:44
m ResponseMessage.svelte:936
m ResponseMessage.svelte:866
m ResponseMessage.svelte:1026
m ResponseMessage.svelte:1029
m ResponseMessage.svelte:582
m ResponseMessage.svelte:376
_t Component.js:44
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
(Async: promise callback)
a root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
InterpretGeneratorResume self-hosted:1417
AsyncFunctionNext self-hosted:804
(Async: async)
_start_router client.js:1603
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
(Async: promise callback)
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply self-hosted:2289
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
(Async: EventListener.handleEvent)
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
and
Uncaught TypeError: U is undefined
$ CompareMessages.svelte:117
d CompareMessages.svelte:137
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
St dom.js:361
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
promise callback*ct/</a< root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
_start_router client.js:1603
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
promise callback* 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
CompareMessages.svelte:117:31
$ CompareMessages.svelte:117
d CompareMessages.svelte:137
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
St dom.js:361
m CompareMessages.svelte:162
m CompareMessages.svelte:105
m CompareMessages.svelte:104
p CompareMessages.svelte:103
at scheduler.js:119
ut scheduler.js:79
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
a root.svelte:35
(Async: promise callback)
a root.svelte:34
l utils.js:227
o index.js:56
f index.js:69
s utils.js:212
ut scheduler.js:99
(Async: promise callback)
lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:62
$set Component.js:507
ce client.js:1129
InterpretGeneratorResume self-hosted:1417
AsyncFunctionNext self-hosted:804
(Async: async)
_start_router client.js:1603
c rocket-loader.min.js:1
(Async: EventListener.handleEvent)
addEventListener rocket-loader.min.js:1
_start_router client.js:1521
jt start.js:27
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:14
(Async: promise callback)
<anonymous> 90fe5199-1827-4365-beaa-31a85c8f876e line 10 > injectedScript:13
apply self-hosted:2289
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
(Async: EventListener.handleEvent)
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
Screenshots/Screen Recordings:
Note
If the bug report is incomplete or does not follow the provided instructions, it may not be addressed. Please ensure that you have followed the steps outlined in the README.md and troubleshooting.md documents, and provide all necessary information for us to reproduce and address the issue. Thank you!
Please let me know if I've missed anything or if there's any additional information needed!
Seems like it's not been fixed, taking a look
Steps 1-8, leading up to these more prominent and noteworthy steps 9) Regenerate the 1st model's response (based on the model dropdown selector, models from top to bottom are sorted from left to right) in the cloned chat. 10) Navigate back to the initial/main chat. 11) Error should be logged to console.
This is the error logged within the browser console when I click back to the original chat:
Uncaught (in promise) TypeError: undefined has no properties
T ResponseMessage.svelte:56
update ResponseMessage.svelte:56
jt Component.js:144
xu ResponseMessage.svelte:276
kd CompareMessages.svelte:113
p CompareMessages.svelte:130
p CompareMessages.svelte:103
p CompareMessages.svelte:102
p CompareMessages.svelte:101
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
xe Chat.svelte:334
update Chat.svelte:132
update Chat.svelte:140
at scheduler.js:115
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:68
$set Component.js:507
Y client.js:1399
zt client.js:2125
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
zt client.js:2022
tn client.js:298
<anonymous> line 10 > injectedScript:13
promise callback* line 10 > injectedScript:12
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
ResponseMessage.svelte:56:41
Refresh the page on this chat's page. Swap away from and then return back to this same page. Witness a new error in browser console:
Uncaught (in promise) TypeError: _ is undefined
T ResponseMessage.svelte:56
update ResponseMessage.svelte:56
jt Component.js:144
xu ResponseMessage.svelte:276
kd CompareMessages.svelte:113
p CompareMessages.svelte:130
p CompareMessages.svelte:103
p CompareMessages.svelte:102
p CompareMessages.svelte:101
at scheduler.js:119
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
xe Chat.svelte:334
update Chat.svelte:132
update Chat.svelte:140
at scheduler.js:115
ut scheduler.js:79
promise callback*lt scheduler.js:20
ht Component.js:81
ctx Component.js:139
$$set root.svelte:68
$set Component.js:507
Y client.js:1399
zt client.js:2125
c rocket-loader.min.js:1
addEventListener rocket-loader.min.js:1
zt client.js:2022
tn client.js:298
<anonymous> 251bb5bc-b17a-42d3-a457-a4ed25b9d123 line 10 > injectedScript:13
promise callback* 251bb5bc-b17a-42d3-a457-a4ed25b9d123 line 10 > injectedScript:12
apply <anonymous code>:10
activateScript rocket-loader.min.js:1
n rocket-loader.min.js:1
run rocket-loader.min.js:1
x rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
runOnLoad rocket-loader.min.js:1
x rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
<anonymous> rocket-loader.min.js:1
ResponseMessage.svelte:56:41
Solved with https://github.com/open-webui/open-webui/commit/a1b4df1b856045959dc7f25ee2e50b9a4939af9c. Thank you very much for your hard work and dedication. @tjbck 🍻