zipping through service with arrows

Bug #752374 reported by John Cegalis
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenLP
Won't Fix
High
Tim Bentley

Bug Description

Win7 1448 and WinXP vm 1448
Since I had this issue before, I decided to test it again. It was my codecs messing it up the first time.
Steps. Load a service file, use right and left arrows to got through the service moving up and down as quick as I can, back and forth, and then I get the traceback. The first traceback happens immediately, the second traceback comes up when I close OpenLP. In the attached file the tracebacks is first and the debug log is under it.

Related branches

Revision history for this message
John Cegalis (jseagull1) wrote :
Revision history for this message
John Cegalis (jseagull1) wrote :

Just got it in Kubuntu trunk bzr 1448

Traceback (most recent call last):
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/servicemanager.py", line 733, in previousItem
    self.makeLive()
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/servicemanager.py", line 1135, in makeLive
    self.serviceItems[item][u'service_item'], child)
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/slidecontroller.py", line 561, in addServiceManagerItem
    self._processItem(item, slideno)
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/slidecontroller.py", line 650, in _processItem
    self.onSlideSelected()
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/slidecontroller.py", line 854, in onSlideSelected
    frame = self.display.text(toDisplay)
  File "/home/john/Projects/openlp/trunk/openlp/core/ui/maindisplay.py", line 189, in text
    Receiver.send_message(u'openlp_process_events')
  File "/home/john/Projects/openlp/trunk/openlp/core/lib/eventreceiver.py", line 287, in send_message
    Receiver.eventreceiver.send_message(event, msg)
  File "/home/john/Projects/openlp/trunk/openlp/core/lib/eventreceiver.py", line 253, in send_message
    log.debug(u'Event %s passed with payload %s' % (event, msg))
  File "/usr/lib/python2.6/logging/__init__.py", line 1043, in debug
    if self.isEnabledFor(DEBUG):
  File "/usr/lib/python2.6/logging/__init__.py", line 1250, in isEnabledFor
    return level >= self.getEffectiveLevel()
  File "/usr/lib/python2.6/logging/__init__.py", line 1238, in getEffectiveLevel
    while logger:
AttributeError: Logger instance has no attribute '__nonzero__'

Revision history for this message
John Cegalis (jseagull1) wrote :

Not sure if this helps. Kubuntu 1448
Openlp does not traceback with only songs or bibles or a mixture of them both.
When I add jpg images and flip through is when it causes the traceback. I ran debug and when the traceback appeared I marked the log, added a few spaces, closed the traceback and it finished logging until I closed openlp.
The time mark is this: 2011-04-07 09:08:36,994 about 2/3rds of the way through with a few spaces separating.

Revision history for this message
Jonathan Corwin (j-corwin) wrote :

Please could you attach the service file, I've tried on my Win7 box with a bunch of images and all is well.

Revision history for this message
Jonathan Corwin (j-corwin) wrote :

Thanks for emailing it to me. I can't reproduce it using the beta exe and your service. I'll try from trunk when I'm at home. Both my PC's are quite new and fairly quick, not sure how fast yours is?

Does throw up another issue though! When going so fast, the standalone images don't always get replaced by the theme when moving to the song, so you end up with lyrics over the top of the image, instead of the solid background.

Revision history for this message
John Cegalis (jseagull1) wrote :

It does it on the church computer with Win7 and that is within a year old with 8gig of memory. It does it on my WinXP vm and Linux running Kubuntu. 4gig memory and the rest probably doesn't matter since it is doing it on two separate computers.

Where my space is in the last log file I posted, the next thing under that is alert something. That has me wondering how alert is getting involved with that error but since I don't know much about reading logs, maybe it is supposed to be there.

Revision history for this message
John Cegalis (jseagull1) wrote :

running in debug, after the traceback and I close it and then openlp, cli shows this:
Traceback (most recent call last):
Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in <type 'exceptions.AttributeError'> ignored

Revision history for this message
Jonathan Corwin (j-corwin) wrote :

This has been duplicated by making an item live (e.g. custom with multiple slides) and then just keeping the down button held down. I duplicated it by making a bunch of images live and doing likewise.

It looks like we need to clear down the typeahead buffer somehow, although I would still be able to press "down down down" in quick succession if I was wanting to skip ahead 3 slides... if possible.

Changed in openlp:
milestone: none → 1.9.6
status: New → Confirmed
Changed in openlp:
importance: Undecided → High
Revision history for this message
John Cegalis (jseagull1) wrote :

A quick note. Doing this "zipping" worked fine about a month ago. I tested it over and over without an issue. Obviously something changed and now I wonder if it is related to the theme showing up in between when switching slides since that was fixed and working before also. There is my uneducated guess.

Revision history for this message
Tim Bentley (trb143) wrote :

Please can you confirm if this is still a bug.

Revision history for this message
John Cegalis (jseagull1) wrote :

It is still a bug now that I checked again. Win7 1548 and Linux 1549

Revision history for this message
John Cegalis (jseagull1) wrote :

Kubuntu Natty bzr 1618
A different error but got it the same way as the initial report at the top.

Traceback (most recent call last):
  File "/home/john/Projects/openlp/trunk/openlp/plugins/songusage/songusageplugin.py", line 164, in onReceiveSongUsage
    self.manager.save_object(song_usage_item)
  File "/home/john/Projects/openlp/trunk/openlp/core/lib/db.py", line 152, in save_object
    self.session.commit()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 132, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 595, in commit
    self.transaction.commit()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 367, in commit
    self._prepare_impl()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 351, in _prepare_impl
    self.session.flush()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1359, in flush
    self._flush(objects)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1440, in _flush
    flush_context.execute()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 299, in execute
    rec.execute(self)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 443, in execute
    uow
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 1594, in _save_obj
    connection = uowtransaction.transaction.connection(self)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 247, in connection
    return self._connection_for_bind(engine)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 307, in _connection_for_bind
    conn = self._parent._connection_for_bind(bind)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 318, in _connection_for_bind
    conn = bind.contextual_connect()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1832, in contextual_connect
    self.pool.connect(),
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 183, in connect
    return _ConnectionFairy(self).checkout()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 370, in __init__
    rec = self._connection_record = pool.get()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 214, in get
    return self.do_get()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 793, in do_get
    return self.create_connection()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 148, in create_connection
    return _ConnectionRecord(self)
RuntimeError: maximum recursion depth exceeded while calling a Python object

Changed in openlp:
milestone: 1.9.6 → 1.9.7
Revision history for this message
Tim Bentley (trb143) wrote :

Nice one. The slide controller was firing too many events at the servicemanager.

Changed in openlp:
assignee: nobody → Tim Bentley (trb143)
status: Confirmed → Fix Committed
Tim Bentley (trb143)
Changed in openlp:
status: Fix Committed → Fix Released
Revision history for this message
John Cegalis (jseagull1) wrote :

Kubuntu Natty 1676
Service contains songs, images and verses.
Using right and left arrows to zip through caused this. Auto preview on or off.

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openlp/plugins/songusage/songusageplugin.py", line 157, in onReceiveSongUsage
    song_usage_item = SongUsageItem()
  File "<string>", line 2, in __init__
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1170, in _new_state_if_none
    state = self._create_instance_state(instance)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1033, in _create_instance_state
    return state.InstanceState(instance, self)
RuntimeError: maximum recursion depth exceeded while calling a Python object

Changed in openlp:
status: Fix Released → Incomplete
Revision history for this message
John Cegalis (jseagull1) wrote :

After I closed the traceback above I got this one.

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openlp/plugins/songusage/songusageplugin.py", line 164, in onReceiveSongUsage
    self.manager.save_object(song_usage_item)
  File "/usr/lib/pymodules/python2.7/openlp/core/lib/db.py", line 152, in save_object
    self.session.commit()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/scoping.py", line 132, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 595, in commit
    self.transaction.commit()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 367, in commit
    self._prepare_impl()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 351, in _prepare_impl
    self.session.flush()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1359, in flush
    self._flush(objects)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1440, in _flush
    flush_context.execute()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 299, in execute
    rec.execute(self)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 443, in execute
    uow
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 1594, in _save_obj
    connection = uowtransaction.transaction.connection(self)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 247, in connection
    return self._connection_for_bind(engine)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 307, in _connection_for_bind
    conn = self._parent._connection_for_bind(bind)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 318, in _connection_for_bind
    conn = bind.contextual_connect()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1832, in contextual_connect
    self.pool.connect(),
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 183, in connect
    return _ConnectionFairy(self).checkout()
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 370, in __init__
    rec = self._connection_record = pool.get()
RuntimeError: maximum recursion depth exceeded

Revision history for this message
Tim Bentley (trb143) wrote :

Marking as wont fix as this is a corner case and you needed to page up and down the service fast in the slide controller more than 3 times quickly.
The fix would be a major re-write of a significant part of the architecture.

Changed in openlp:
status: Incomplete → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.