Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shift: Infinite recursion in midi-components-0.0.js #9992

Closed
mixxxbot opened this issue Aug 23, 2022 · 5 comments
Closed

Shift: Infinite recursion in midi-components-0.0.js #9992

mixxxbot opened this issue Aug 23, 2022 · 5 comments

Comments

@mixxxbot
Copy link
Collaborator

Reported by: uklotzde
Date: 2020-05-27T22:01:49Z
Status: Fix Released
Importance: High
Launchpad Issue: lp1881027
Tags: controllers


In 2.3 my MC6000MK2 is almost unusable. Pressing shift triggers an infinite recursion. 2 message boxes appear in short succession:

1st message box:
Uncaught exception at line 524 in file /tmp/mixxx/res/controllers/midi-components-0.0.js.

Exception:
RangeError: Maximum call stack size exceeded.

Backtrace:

2nd message box:
Uncaught exception at line 139 in file /tmp/mixxx/res/controllers/midi-components-0.0.js.

Exception:
RangeError: Maximum call stack size exceeded.

Backtrace:

Running Mixxx with --controllerDebug shows this output:
Debug [Controller]: MC6000MK2 MIDI 1: t:26054 ms status 0x90 (ch 1, opcode 0x9), ctrl 0x60, val 0x40
Warning [Controller]: ControllerEngine: "Uncaught exception at line 524 in file /tmp/mixxx/res/controllers/midi-components-0.0.js.\n\nException:\n  RangeError: Maximum call stack size exceeded.\n\nBacktrace:\n  "
Debug [Controller]: MidiController: Invalid script function "DenonMC6000MK2.leftDeck1.shiftButtonInput"
Debug [Controller]: MC6000MK2 MIDI 1: t:26162 ms status 0x80 (ch 1, opcode 0x8), ctrl 0x60, val 0x00
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {6286ce20-a3c9-44be-8733-0a0ad2332962}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect1], enabled) from connection {a8f7bafe-06bf-416a-a650-11122329bad1}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {75282d04-5040-48cc-b6a4-afb14be2a442}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect1], enabled) to connection {3d4e8f31-6aa9-4a75-b5fb-a1ba2e636d1b}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {ceff76fb-8ea0-4dce-99ec-6dff50bc5a94}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect2], enabled) from connection {0b1ef646-937d-4d6d-92ac-793556ec5452}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {5c20df21-7ab7-4106-a826-c033033df903}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect2], enabled) to connection {86a18f7c-0a25-4ade-b513-3b3f38da5127}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {fc040c93-7ffa-4771-b719-366f7910a13f}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect3], enabled) from connection {6bed9f55-5306-473c-b40c-9b1e64588320}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {85f6d70b-2dc1-4025-b456-789f192e1e61}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect3], enabled) to connection {4eda1b12-ccf3-44b6-82d4-aa2d4c82690e}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {75282d04-5040-48cc-b6a4-afb14be2a442}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect1], enabled) from connection {3d4e8f31-6aa9-4a75-b5fb-a1ba2e636d1b}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {e053bf0a-3531-4d5e-8df5-d3c307c09bb9}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect1], enabled) to connection {ecf55e5d-804e-4dbb-b126-78f163efc012}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {5c20df21-7ab7-4106-a826-c033033df903}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect2], enabled) from connection {86a18f7c-0a25-4ade-b513-3b3f38da5127}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {284ec40f-9a55-42ed-81a7-47ddf35de477}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect2], enabled) to connection {2d15f340-279b-483e-9127-4b26f91661ad}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {85f6d70b-2dc1-4025-b456-789f192e1e61}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect3], enabled) from connection {4eda1b12-ccf3-44b6-82d4-aa2d4c82690e}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {b74c9db4-1017-472d-8c75-b210c73c50ac}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect3], enabled) to connection {c321db7f-3aab-4053-9212-1636d6699769}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1], focused_effect) from connection {e053bf0a-3531-4d5e-8df5-d3c307c09bb9}
Debug [Controller]: Disconnected ([EffectRack1_EffectUnit1_Effect1], enabled) from connection {ecf55e5d-804e-4dbb-b126-78f163efc012}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1], focused_effect) to connection {b310b362-baf8-4243-9de2-1d99f3f9db86}
Debug [Controller]: Connected ([EffectRack1_EffectUnit1_Effect1], enabled) to connection {3812dea1-ecc2-4dce-ad56-0fea3c6d49e5}
...

I have no idea where to start the analysis? 2.2 works flawlessly.

@mixxxbot
Copy link
Collaborator Author

Commented by: Be-ing
Date: 2020-05-27T22:13:35Z


My first guesses would be a regression introduced by #2588 or #2569

I have no idea where to start the analysis?

A perfect case for Git bisect :)

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2020-05-27T23:05:17Z


I guess it could be the introduction of forEachComponentContainer

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2020-05-27T23:10:13Z


#2266

@mixxxbot
Copy link
Collaborator Author

Commented by: uklotzde
Date: 2020-05-29T21:12:29Z


Storing a reference to a parent ComponentContainer causes an infinite loop in the recursive shift/unshift handling. The implicit recursion is convenient but dangerous.

Workaround: Don't store references to parent ComponentContainer as a member.

Workaround for Denon MC6000MK2: #2833

@mixxxbot
Copy link
Collaborator Author

Issue closed with status Fix Released.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@mixxxbot mixxxbot added this to the 2.3.0 milestone Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant