Am Samstag, den 27.04.2013, 09:46 -0300 schrieb Lisandro Damián Nicanor Pérez Meyer: > On Sat 27 Apr 2013 04:14:28 Paul Menzel escribió: > tag 706243 unreproducible > thanks > > > Am Freitag, den 26.04.2013, 21:53 -0300 schrieb Lisandro Damián Nicanor > > Pérez Meyer: > > > tag 706243 moreinfo > > > thanks > [snip] > > Sorry for forgetting that. The only German string I see, is the > > following. > > > > #0 0x00007f7a6c03e594 in QObject::thread (this=0x263d580) at > > kernel/qobject.cpp:1371 > > > > The translations is »No such file or directory«, which just means, that > > GDB did not find the source for `kernel/qobject.cpp`, which is indeed > > not there as I do not have them installed. So the `list` command does > > not work. > > Hi Paul! I've installed hplip-gui, ran hp-systray and could not reproduce > this > bug.
I think you need a device and scan something. > I know you filled the bug from a different machine from the one you can > reproduce this issue. Can you run reportbug there and just add the list of > installed packages? (ie, no need to fill the bug again, I just need the info). Sure. I am pasting it at the end of this message. > What happens is you try adding a new user and run hp-systray from there? I need to test that. > Can you reproduce the issue in your i386 machine? I have no device connected to that machine, but it seems to work. > I'm CCing the hplip maintainers, because I'm not seeing this kind of crashes > anywhere else in Qt, so it might be an hplip issue. I tried to debug this a little, but did not get very far. $ apt-get source libqtcore4 $ cd qt4-x11-4.8.4+dfsg/src/corelib qt4-x11-4.8.4+dfsg/src/corelib$ LANG=C gdb python -c ~/20130426--hp-systray--libQtCore.so.4.8.2.core #0 0x00007f7a6c03e594 in QObject::thread (this=0x263d580) at kernel/qobject.cpp:1371 1371 } (gdb) l 1366 \sa moveToThread() 1367 */ 1368 QThread *QObject::thread() const 1369 { 1370 return d_func()->threadData->thread; 1371 } 1372 1373 /*! 1374 Changes the thread affinity for this object and its children. The 1375 object cannot be moved if it has a parent. Event processing will So the not sure why it says 1371 and not 1370 where it actually has some command line, which would make sense for a segmentation fault, if `d_func()->threadData->thread` in invalid. Looking at HPLIP code, it looks like this is related somehow to PyQt’s SystemTray. > #10 0x00000000004c23d2 in frame_dealloc.14820 (f= > Frame 0x1e13910, for file /usr/share/hplip/ui4/systemtray.py, line > 810, in run (i=0, notifier=<QSocketNotifier at remote 0x22e5b00>)) > at ../Objects/frameobject.c:460 > _py_tmp = <optimized out> > p = 0x1e13a90 > valuestack = 0x1e13aa8 > co = <optimized out> > #11 0x00000000004c2427 in frame_dealloc.14820 (f= > Frame 0x2673840, for file /usr/share/hplip/ui4/systemtray.py, line > 748, in notifierActivated ()) at ../Objects/frameobject.c:468 > p = <optimized out> > valuestack = <optimized out> > co = <optimized out> No idea, why line 810 is after line 748 in this backtrace. $ nl -ba ui4/systemtray.py […] 624 def notifierActivated(self, s): 625 m = '' 626 while True: 627 try: 628 r, w, e = select.select([self.read_pipe], [], [self.read_pipe], 1.0) 629 except select.error: 630 log.debug("Error in select()") 631 break 632 633 if e: 634 log.error("Pipe error: %s" % e) 635 break 636 637 if r: 638 m = ''.join([m, os.read(self.read_pipe, self.fmt_size)]) 639 while len(m) >= self.fmt_size: 640 event = device.Event(*struct.unpack(self.fmt, m[:self.fmt_size])) 641 642 m = m[self.fmt_size:] 643 644 if event.event_code == EVENT_CUPS_QUEUES_CHANGED: 645 self.resetDevice() 646 for d in device.getSupportedCUPSDevices(back_end_filter=['hp', 'hpfax']): 647 self.addDevice(d) 648 649 self.setMenu() 650 651 if event.event_code == EVENT_USER_CONFIGURATION_CHANGED: 652 log.debug("Re-reading configuration (EVENT_USER_CONFIGURATION_CHANGED)") 653 self.user_settings.load() 654 self.user_settings.debug() 655 656 elif event.event_code == EVENT_SYSTEMTRAY_EXIT: 657 self.quit() 658 return 659 660 if self.user_settings.systray_visible in \ 661 (SYSTRAY_VISIBLE_SHOW_ALWAYS, SYSTRAY_VISIBLE_HIDE_WHEN_INACTIVE): 662 663 log.debug("Showing...") 664 self.tray_icon.setVisible(True) 665 666 if event.event_code == EVENT_DEVICE_UPDATE_ACTIVE: 667 if not self.active_icon: 668 self.tray_icon.setIcon(self.prop_active_icon) 669 self.active_icon = True 670 continue 671 672 elif event.event_code == EVENT_DEVICE_UPDATE_INACTIVE: 673 if self.active_icon: 674 self.tray_icon.setIcon(self.prop_icon) 675 self.active_icon = False 676 continue 677 678 elif event.event_code == EVENT_DEVICE_UPDATE_BLIP: 679 if not self.active_icon: 680 self.tray_icon.setIcon(self.prop_active_icon) 681 self.active_icon = True 682 QTimer.singleShot(BLIP_DELAY, self.blipTimeout) 683 continue 684 685 if self.user_settings.systray_visible in (SYSTRAY_VISIBLE_HIDE_WHEN_INACTIVE, SYSTRAY_VISIBLE_HIDE_ALWAYS): 686 log.debug("Waiting to hide...") 687 QTimer.singleShot(HIDE_INACTIVE_DELAY, self.timeoutHideWhenInactive) 688 689 if event.event_code <= EVENT_MAX_USER_EVENT: 690 self.addDevice(event.device_uri) 691 self.setMenu() 692 693 if self.tray_icon.supportsMessages(): 694 695 log.debug("Tray icon message:") 696 event.debug() 697 698 error_state = STATUS_TO_ERROR_STATE_MAP.get(event.event_code, ERROR_STATE_CLEAR) 699 desc = device.queryString(event.event_code) 700 701 show_message = False 702 if self.user_settings.systray_messages == SYSTRAY_MESSAGES_SHOW_ALL: # OK, Busy 703 show_message = True 704 705 elif self.user_settings.systray_messages in (SYSTRAY_MESSAGES_SHOW_ERRORS_AND_WARNINGS, SYSTRAY_MESSAGES_SHOW_ERRORS_ONLY): 706 if error_state == ERROR_STATE_ERROR: 707 show_message = True 708 709 elif self.user_settings.systray_messages == SYSTRAY_MESSAGES_SHOW_ERRORS_AND_WARNINGS and \ 710 error_state in (ERROR_STATE_WARNING, ERROR_STATE_LOW_SUPPLIES, ERROR_STATE_LOW_PAPER): 711 712 show_message = True 713 714 if event.printer_name: 715 d = QString(event.printer_name) 716 else: 717 back_end, is_hp, bus, model, serial, dev_file, host, zc, port = \ 718 device.parseDeviceURI(event.device_uri) 719 720 if bus == 'usb': 721 idd = serial 722 elif bus == 'net': 723 idd = host 724 elif bus == 'par': 725 idd = dev_file 726 else: 727 idd = 'unknown' 728 729 self.model = models.normalizeModelUIName(model) 730 731 if back_end == 'hp': 732 d = self.__tr("%1 Printer (%2)").arg(model).arg(idd) 733 734 elif back_end == 'hpaio': 735 d = self.__tr("%1 Scanner (%2)").arg(model).arg(idd) 736 737 elif back_end == 'hpfax': 738 d = self.__tr("%1 Fax (%2)").arg(model).arg(idd) 739 740 else: 741 d = self.__tr("%1 (%2)").arg(model).arg(idd) 742 743 if show_message: 744 if have_pynotify and pynotify.init("hplip"): # Use libnotify/pynotify 745 icon, urgency = ERROR_STATE_TO_ICON_AND_URGENCY_PYNOTIFY.get(error_state, 746 (getPynotifyIcon('info'), pynotify.URGENCY_NORMAL)) 747 748 if event.job_id and event.title: 749 msg = "%s\n%s: %s\n(%s/%s)" % (unicode(d), desc, event.title, event.username, event.job_id) 750 log.debug("Notify: uri=%s desc=%s title=%s user=%s job_id=%d code=%d" % 751 (event.device_uri, desc, event.title, event.username, event.job_id, event.event_code)) 752 else: 753 msg = "%s\n%s (%s)" % (unicode(d), desc, event.event_code) 754 log.debug("Notify: uri=%s desc=%s code=%d" % (event.device_uri, desc, event.event_code)) 755 756 n = pynotify.Notification("HPLIP Device Status", msg, icon) 757 n.set_urgency(urgency) 758 759 if error_state == ERROR_STATE_ERROR: 760 n.set_timeout(pynotify.EXPIRES_NEVER) 761 else: 762 n.set_timeout(TRAY_MESSAGE_DELAY) 763 764 n.show() 765 766 else: # Use "standard" message bubbles 767 icon = ERROR_STATE_TO_ICON.get(error_state, QSystemTrayIcon.Information) 768 if event.job_id and event.title: 769 log.debug("Bubble: uri=%s desc=%s title=%s user=%s job_id=%d code=%d" % 770 (event.device_uri, desc, event.title, event.username, event.job_id, event.event_code)) 771 self.tray_icon.showMessage(self.__tr("HPLIP Device Status"), 772 QString("%1\n%2: %3\n(%4/%5)").\ 773 arg(d).\ 774 arg(desc).arg(event.title).\ 775 arg(event.username).arg(event.job_id), 776 icon, TRAY_MESSAGE_DELAY) 777 778 else: 779 log.debug("Bubble: uri=%s desc=%s code=%d" % (event.device_uri, desc, event.event_code)) 780 self.tray_icon.showMessage(self.__tr("HPLIP Device Status"), 781 QString("%1\n%2 (%3)").arg(d).\ 782 arg(desc).arg(event.event_code), 783 icon, TRAY_MESSAGE_DELAY) 784 785 else: 786 break 787 788 789 def blipTimeout(self): 790 if self.active_icon: 791 self.tray_icon.setIcon(self.prop_icon) 792 self.active_icon = False 793 794 795 796 def __tr(self, s, c=None): 797 return QApplication.translate("SystemTray", s, c, QApplication.UnicodeUTF8) 798 799 800 801 def run(read_pipe): 802 log.set_module("hp-systray(qt4)") 803 log.debug("PID=%d" % os.getpid()) 804 805 app = SystemTrayApp(sys.argv, read_pipe) 806 app.setQuitOnLastWindowClosed(False) # If not set, settings dlg closes app 807 808 i = 0 809 while i < 60: 810 if QSystemTrayIcon.isSystemTrayAvailable(): 811 break 812 time.sleep(1.0) 813 i += 1 814 815 if not QSystemTrayIcon.isSystemTrayAvailable(): 816 FailureUI(None, 817 QApplication.translate("SystemTray", 818 "<b>No system tray detected on this system.</b><p>Unable to start, exiting.</p>", 819 None, QApplication.UnicodeUTF8), 820 QApplication.translate("SystemTray", "HPLIP Status Service", 821 None, QApplication.UnicodeUTF8)) 822 else: 823 notifier = QSocketNotifier(read_pipe, QSocketNotifier.Read) 824 QObject.connect(notifier, SIGNAL("activated(int)"), app.notifierActivated) 825 826 app.exec_() So, it probably is a HPLIP or PyQt issue. Though libqtcore4 should probably not crash and somehow check that it can dereference some pointer. Thanks, Paul -- System Information: Debian Release: 7.0 APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages libqtcore4 depends on: ii libc6 2.13-38 ii libgcc1 1:4.7.2-5 ii libglib2.0-0 2.33.12+really2.32.4-5 ii libstdc++6 4.7.2-5 ii multiarch-support 2.13-38 ii zlib1g 1:1.2.7.dfsg-13 libqtcore4 recommends no packages. Versions of packages libqtcore4 suggests: ii libicu48 4.8.1.1-12 ii libthai0 0.1.18-2 -- no debconf information
signature.asc
Description: This is a digitally signed message part