-
-
Notifications
You must be signed in to change notification settings - Fork 455
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
"Recursion depth exceeded" while scrolling #89
Comments
Thanks for reporting this issue. I pushed a branch called "recursion-fix" that may address this bug. Can you try using that branch and see if it indeed resolved this issue? If so I'll go ahead and merge it into master. You can run git-cola from it's source tree (against another project) by doing something along these lines:
Basically, just call the git-cola script directly and you will be running a development version. |
Thanks for the prompt response. However, I can still reproduce the problem - see stacktrace below (line numbers changed slightly). Note that the bug is not always reproduceable at first attempt, one must repeat the procedure a variable number of times. I had also forgot to say that I first always select a file with changes, so that the diff viewer has something to show. Finally, can I also request an option to disable Apple-scroll? I always do that unintentionally. If you want me to open another tracker item, as I guess I should, I can do that. File "/Users/pgiarrusso/Documents/Admin/git-cola/cola/controllers/options.py", line 105, in tell_parent_model |
That whole part of the code is something I've been meaning to rewrite. I wrote it a long time ago when I was a bit newer to Qt and much more magically inclined. I haven't repro'd this yet but I've been on linux this whole time. I wouldn't expect that to matter. I'll try this on the mac soon too, but it'd almost be better to rewrite the options dialog to use editor commands and the notification stuff instead of QObserver. this bug should really be called "War on QObserver" or something. anyways, reopening. |
Thanks for the fix, seems to work for now (I'm testing v1.4.3.5-89-gb0589e1)! |
Great suggestion! |
I noticed the following stacktrace while scrolling - the actual trace was longer and did not fit the console history (whose depth is 1000 lines), but looked perfectly periodic, as visibile below. I observed the issue while changing diff viewer's font size through Apple+mouse wheel (on a Mac - that would be equivalent to Ctrl+mouse wheel on non-Mac machines, I assume). The option window was also open at some point. I managed to reproduce a similar trace by playing enough with the option window.
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 20, in set_param
self.notify_observers(param)
File "/usr/local/share/git-cola/lib/cola/observable.py", line 36, in notify_observers
observer.notify(_param)
File "/usr/local/share/git-cola/lib/cola/observer.py", line 24, in notify
self.subject_changed(attr, value)
File "/usr/local/share/git-cola/lib/cola/qobserver.py", line 290, in subject_changed
action(_widgets)
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 20, in set_param
self.notify_observers(param)
File "/usr/local/share/git-cola/lib/cola/observable.py", line 36, in notify_observers
observer.notify(_param)
File "/usr/local/share/git-cola/lib/cola/observer.py", line 24, in notify
self.subject_changed(attr, value)
File "/usr/local/share/git-cola/lib/cola/qobserver.py", line 290, in subject_changed
action(_widgets)
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 20, in set_param
self.notify_observers(param)
File "/usr/local/share/git-cola/lib/cola/observable.py", line 36, in notify_observers
observer.notify(_param)
File "/usr/local/share/git-cola/lib/cola/observer.py", line 24, in notify
self.subject_changed(attr, value)
File "/usr/local/share/git-cola/lib/cola/qobserver.py", line 290, in subject_changed
action(_widgets)
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 20, in set_param
self.notify_observers(param)
File "/usr/local/share/git-cola/lib/cola/observable.py", line 36, in notify_observers
observer.notify(_param)
File "/usr/local/share/git-cola/lib/cola/observer.py", line 24, in notify
self.subject_changed(attr, value)
File "/usr/local/share/git-cola/lib/cola/qobserver.py", line 290, in subject_changed
action(_widgets)
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/decorators.py", line 18, in _decorator
return caller(func, _args, *_opts)
RuntimeError: maximum recursion depth exceeded
Here's the second stack trace:
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 20, in set_param
self.notify_observers(param)
File "/usr/local/share/git-cola/lib/cola/observable.py", line 36, in notify_observers
observer.notify(_param)
File "/usr/local/share/git-cola/lib/cola/observer.py", line 24, in notify
self.subject_changed(attr, value)
File "/usr/local/share/git-cola/lib/cola/qobserver.py", line 290, in subject_changed
action(_widgets)
File "/usr/local/share/git-cola/lib/cola/controllers/options.py", line 105, in tell_parent_model
cola.model().set_param(param, self.model.param(param))
File "/usr/local/share/git-cola/lib/cola/models/observable.py", line 17, in set_param
Model.set_param(self, param, value)
RuntimeError: maximum recursion depth exceeded while calling a Python object
To obtain this, I tried something along this lines:
Sometimes, but not needed - Change the font size also through the mouse wheel on the diff viewer
The text was updated successfully, but these errors were encountered: