Bug 279690 - Qaptworker crashed with SIGFPE in [WorkerAcquire::Pulse, pkgAcquire::Run, ListUpdate]
Summary: Qaptworker crashed with SIGFPE in [WorkerAcquire::Pulse, pkgAcquire::Run, Lis...
Status: RESOLVED FIXED
Alias: None
Product: muon
Classification: Applications
Component: qaptworker (show other bugs)
Version: unspecified
Platform: Debian unstable Linux
: NOR crash
Target Milestone: ---
Assignee: Jonathan Thomas
URL:
Keywords:
: 279763 279913 (view as bug list)
Depends on:
Blocks:
 
Reported: 2011-08-08 20:50 UTC by shani
Modified: 2011-08-12 18:54 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In: 1.2.0


Attachments
syslog (540.67 KB, application/octet-stream)
2011-08-08 20:50 UTC, shani
Details
screenshot of popup message from muon (22.73 KB, image/png)
2011-08-08 20:51 UTC, shani
Details

Note You need to log in before you can comment on or make changes to this bug.
Description shani 2011-08-08 20:50:41 UTC
Created attachment 62683 [details]
syslog

Version:           unspecified (using KDE 4.7.0) 
OS:                Linux

i upgraded to ubuntu oneiric latest updates and purged residual configuration.
and since next boot i keep getting this message when tring to check for updates.

i tried reinstalling a few related packages but no luck

let me know if you need more than my addad logs

Reproducible: Always

Steps to Reproduce:
run muon package manager and check for updates

Actual Results:  
Qaptworkere error

Expected Results:  
no errors

OS: Linux (i686) release 3.0.0-8-generic
Compiler: gcc
Comment 1 shani 2011-08-08 20:51:52 UTC
Created attachment 62684 [details]
screenshot of popup message from muon
Comment 2 shani 2011-08-08 20:56:54 UTC
apt is still working though
Comment 3 Jonathan Thomas 2011-08-08 22:07:23 UTC
Hi,

I suspect that for some reason qaptworker is crashing. It'll be a bit tricky to debug compared to a normal application, though. To get a crash log, this is what you'll have to do:

- Install qapt-dbg and gdb, if they're not already installed
- In a console, run "sudo gdb qaptworker"
- In the gdb console type "run --nofork"
- Hit enter, and quickly (within 10 seconds) hit the update button in Muon.

If it does crash, the gdb console should say something like: "Program received signal SIGSEGV, Segmentation fault."

If it does, type "bt full", and copy/paste the output of that command here.

Thanks,
Jonathan
Comment 4 Kevin S 2011-08-09 06:59:24 UTC
Confirmed on the same specs. 

>>> Output of gdb:

Program received signal SIGFPE, Arithmetic exception.
0x000000000040fce5 in WorkerAcquire::Pulse (this=0x89fd70, 
    Owner=0x7fffffffda90)
    at /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp:169
169     /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp: No such file or directory.
        in /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp



>>> Output of bt full:

#0  0x000000000040fce5 in WorkerAcquire::Pulse (this=0x89fd70, 
    Owner=0x7fffffffda90)
    at /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp:169
        packagePercentage = <optimized out>
        percentage = 0
        speed = -1
        ETA = <optimized out>
#1  0x00007ffff6dbe517 in pkgAcquire::Run(int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#2  0x00007ffff6dbbdd6 in ListUpdate(pkgAcquireStatus&, pkgSourceList&, int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#3  0x000000000040a419 in QAptWorker::updateCache (this=0x7fffffffe610)
    at /build/buildd/qapt-1.1.90/src/worker/worker.cpp:210
        result = <optimized out>
        Lock = <incomplete type>
        fetcher = <incomplete type>
#4  0x0000000000413e6f in QaptworkerAdaptor::qt_metacall (this=0x62e010, 
    _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0x7fffffffde90)
    at /build/buildd/qapt-1.1.90/obj-x86_64-linux-gnu/src/worker/qaptworkeradaptor.moc:210
No locals.
#5  0x00007ffff7088ff9 in QDBusConnectionPrivate::deliverCall (this=0x6375b0, 
    object=0x62e010, msg=..., metaTypes=..., slotIdx=26)
    at qdbusintegrator.cpp:942
        context = {connection = {static staticMetaObject = {d = {
                superdata = 0x0, 
                stringdata = 0x7ffff70c9740 "QDBusConnection", 
                data = 0x7ffff70c9960, extradata = 0x0}}, d = 0x6375b0}, 
          message = @0x6414d0}
        old = 0x0
        ptr = {o = 0x62e010}
        params = {a = 10, s = 1, ptr = 0x7fffffffde90, {
            array = "\000\000\000\000\000\000\000\000\360\024d\000\000\000\000\000\220\337\377\377\377\177\000\000\204\005\t\367\377\177\000\000\220\337\377\377\377\177\000\000\200\337\377\377\377\177\000\000\360\024d\000\000\000\000\000\24---Type <return> to continue, or q <return> to quit---
Comment 5 Kevin S 2011-08-09 07:02:29 UTC
Also here is the muon kcrash report after the error.

>>>Output of Kcrash report:

Application: Muon Package Manager (muon), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f82cf2f8780 (LWP 1858))]

Thread 2 (Thread 0x7f82bae43700 (LWP 1862)):
#0  0x00007f82cca09093 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f82c8396ac8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f82c8396f89 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f82cde4c7ae in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#4  0x00007f82cde20c62 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#5  0x00007f82cde20e67 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#6  0x00007f82cdd382cf in QThread::exec() () from /usr/lib/libQtCore.so.4
#7  0x00007f82cde03c2f in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f82cdd3ad55 in ?? () from /usr/lib/libQtCore.so.4
#9  0x00007f82c8e63d8c in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#10 0x00007f82cca161dd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f82cf2f8780 (LWP 1858)):
[KCrash Handler]
#6  0x00007f82cec94451 in QApt::Backend::toInstallCount() const () from /usr/lib/libqapt.so.1
#7  0x00007f82cec945c6 in QApt::Backend::areChangesMarked() const () from /usr/lib/libqapt.so.1
#8  0x00007f82ceee7e29 in MuonMainWindow::queryExit() () from /usr/lib/libmuonprivate.so.1
#9  0x00007f82ce915b0e in KMainWindow::closeEvent(QCloseEvent*) () from /usr/lib/libkdeui.so.5
#10 0x00007f82cd227c6e in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#11 0x00007f82cd5e614b in QMainWindow::event(QEvent*) () from /usr/lib/libQtGui.so.4
#12 0x00007f82ce9513e8 in KXmlGuiWindow::event(QEvent*) () from /usr/lib/libkdeui.so.5
#13 0x00007f82cd1d7154 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#14 0x00007f82cd1dbfc1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#15 0x00007f82ce855de6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#16 0x00007f82cde21a6c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#17 0x00007f82cd22281d in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) () from /usr/lib/libQtGui.so.4
#18 0x00007f82cd257d36 in QApplication::x11ClientMessage(QWidget*, _XEvent*, bool) () from /usr/lib/libQtGui.so.4
#19 0x00007f82cd25619b in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#20 0x00007f82cd27eac2 in ?? () from /usr/lib/libQtGui.so.4
#21 0x00007f82c83965bd in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007f82c8396db8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007f82c8396f89 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007f82cde4c746 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#25 0x00007f82cd27e72e in ?? () from /usr/lib/libQtGui.so.4
#26 0x00007f82cde2521f in QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#27 0x00007f82ceca05d3 in ?? () from /usr/lib/libqapt.so.1
#28 0x00007f82cb801642 in pkgCacheGenerator::MergeList(pkgCacheGenerator::ListParser&, pkgCache::VerIterator*) () from /usr/lib/libapt-pkg.so.4.11
#29 0x00007f82cb85d7da in debPackagesIndex::Merge(pkgCacheGenerator&, OpProgress*) const () from /usr/lib/libapt-pkg.so.4.11
#30 0x00007f82cb7fe987 in ?? () from /usr/lib/libapt-pkg.so.4.11
#31 0x00007f82cb80480b in pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool) () from /usr/lib/libapt-pkg.so.4.11
#32 0x00007f82cb7f8482 in pkgCacheFile::BuildCaches(OpProgress*, bool) () from /usr/lib/libapt-pkg.so.4.11
#33 0x00007f82cb7f88a4 in pkgCacheFile::Open(OpProgress*, bool) () from /usr/lib/libapt-pkg.so.4.11
#34 0x00007f82ceca0397 in QApt::Cache::open() () from /usr/lib/libqapt.so.1
#35 0x00007f82cec9ba81 in QApt::Backend::reloadCache() () from /usr/lib/libqapt.so.1
#36 0x00007f82ceefff0d in PackageWidget::reload() () from /usr/lib/libmuonprivate.so.1
#37 0x000000000040e409 in _start ()
Comment 6 Jonathan Thomas 2011-08-09 12:35:57 UTC
That Muon crash is unrelated to the qaptworker one, as has been fixed already in trunk. (Bug 279345, has to do with exiting Muon during an internal reload after the cache update)

Thanks for the qaptworker crash log. I'll see what I can do.
Comment 7 Jonathan Thomas 2011-08-09 12:49:40 UTC
Ah, ok. It's a fairly simple case of division by zero. I'll commit a fix when I'm able to get to a computer with commit access later today.
Comment 8 shani 2011-08-09 20:30:15 UTC
thanks johnathan and kevin ... i opend the bug yesterday and was away from a computer today.
saved me some work ... looking forward for the fix

G
Comment 9 shani 2011-08-09 21:30:17 UTC
i tried to reproduce in gdb console and my results were a bit dfferent
in fact it said

(gdb) run --nofork
Starting program: /usr/bin/qaptworker --nofork
[Thread debugging using libthread_db enabled]
[Inferior 1 (process 5478) exited normally]

the same popup message occurs the operation fails (no crash or closing of processes) ...
could it be that i am doing something wrong?
or is there another problem?
Comment 10 Jonathan Thomas 2011-08-09 21:43:18 UTC
Hmm, about the only thing I can think of is that there was an old copy of qaptworker running when you ran it in gdb, in which case qaptworker will exit normally.
Comment 11 Jonathan Thomas 2011-08-09 21:44:27 UTC
Oh, also make sure not to click update until "[Thread debugging using libthread_db enabled]" appears, or maybe a second or two after. (But still under 10 seconds)
Comment 12 Jonathan Thomas 2011-08-09 21:51:35 UTC
I see that the Synaptic package manager just made this same bugfix yesterday. Something must have changed with the new apt version in Ubuntu 11.10 that exposed the bug (Not checking for division by zero).

I've gotten 3 reports of this now, so I think it's safe to say that they're all this bug, even if you end up not being able to get a backtrace. :)
Comment 13 Jonathan Thomas 2011-08-09 21:52:18 UTC
*** Bug 279763 has been marked as a duplicate of this bug. ***
Comment 14 Jonathan Thomas 2011-08-09 21:53:50 UTC
Git commit 561b6d02ca04d8d4a20902571b2130ed494ce63b by Jonathan Thomas.
Committed on 09/08/2011 at 23:52.
Pushed by jmthomas into branch 'master'.

Don't divide by zero. Fixes a crash exposed by the latest APT update.

BUG: 279690
CCMAIL: 823087@bugs.launchpad.net

M  +5    -1    src/worker/workeracquire.cpp

http://commits.kde.org/libqapt/561b6d02ca04d8d4a20902571b2130ed494ce63b
Comment 15 shani 2011-08-10 10:44:06 UTC
installed the fix you commited...
problem still happaning

debug trace output

(gdb) run --nofork

Starting program: /usr/bin/qaptworker --nofork
[Thread debugging using libthread_db enabled]
[New Thread 0xb7dddb70 (LWP 4229)]

clicking muon "check for updates" (not hard to catch the right timing)

Program received signal SIGFPE, Arithmetic exception.
0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1

(gdb) bt full output:

#0  0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1
No symbol table info available.
#1  0x08056d1b in WorkerAcquire::Pulse (this=0x82248b0, Owner=0xbfffef34)
    at /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp:169
        packagePercentage = <optimized out>
        percentage = 0
        speed = -1
        ETA = <optimized out>
#2  0x005165c6 in pkgAcquire::Run(int) () from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#3  0x00513af7 in ListUpdate(pkgAcquireStatus&, pkgSourceList&, int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#4  0x08051145 in QAptWorker::updateCache (this=0xbffff78c)
    at /build/buildd/qapt-1.1.90/src/worker/worker.cpp:210
        result = true
        Lock = <incomplete type>
        fetcher = <incomplete type>
#5  0x0805b131 in QaptworkerAdaptor::qt_metacall (this=0x8068b40, 
    _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0xbffff17c)
    at /build/buildd/qapt-1.1.90/obj-i686-linux-gnu/src/worker/qaptworkeradaptor.moc:210
No locals.
#6  0x0044fce7 in QDBusConnectionPrivate::deliverCall (this=0x8072508, object=
    0x8068b40, msg=..., metaTypes=..., slotIdx=1) at qdbusintegrator.cpp:942
        context = {connection = {static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x495560 "QDBusConnection", data = 0x495780, 
                extradata = 0x0}}, d = 0x8072508}, message = @0x8081548}
        old = 0x0
        ptr = {o = 0x8068b40}
        params = {a = 10, s = 1, ptr = 0xbffff17c, {
            array = "\000\000\000\000\064\362\377\277\354\024\b\b\021\001\000\000on+\000\064\362\377\277X\320<\000\000\000\000\000\252\000\034\000\320\005\b\b(\024\b\b\364\357<", q_for_alignment_1 = -4611701188251877376, 
            q_for_alignment_2 = -1.9966316223144531}}
        i = 0
        outputArgs = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        fail = false
        auxParameters = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        pCount = 0
#7  0x00450e16 in QDBusConnectionPrivate::activateCall (this=0x8072508, 
    object=0x8068b40, flags=273, msg=...) at qdbusintegrator.cpp:845


i didn't want to reopen ... in the chance i didn't fully understand you
would you mind if i'll reopen?
Comment 16 shani 2011-08-10 10:46:02 UTC
sorry ... not a full report
here:

(gdb) run --nofork
Starting program: /usr/bin/qaptworker --nofork
[Thread debugging using libthread_db enabled]
[Inferior 1 (process 4205) exited normally]
(gdb) run --nofork
Starting program: /usr/bin/qaptworker --nofork
[Thread debugging using libthread_db enabled]
[New Thread 0xb7dddb70 (LWP 4229)]

Program received signal SIGFPE, Arithmetic exception.
0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1
(gdb) bt full
#0  0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1
No symbol table info available.
#1  0x08056d1b in WorkerAcquire::Pulse (this=0x82248b0, Owner=0xbfffef34)
    at /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp:169
        packagePercentage = <optimized out>
        percentage = 0
        speed = -1
        ETA = <optimized out>
#2  0x005165c6 in pkgAcquire::Run(int) () from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#3  0x00513af7 in ListUpdate(pkgAcquireStatus&, pkgSourceList&, int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#4  0x08051145 in QAptWorker::updateCache (this=0xbffff78c)
    at /build/buildd/qapt-1.1.90/src/worker/worker.cpp:210
        result = true
        Lock = <incomplete type>
        fetcher = <incomplete type>
#5  0x0805b131 in QaptworkerAdaptor::qt_metacall (this=0x8068b40, 
    _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0xbffff17c)
    at /build/buildd/qapt-1.1.90/obj-i686-linux-gnu/src/worker/qaptworkeradaptor.moc:210
No locals.
#6  0x0044fce7 in QDBusConnectionPrivate::deliverCall (this=0x8072508, object=
    0x8068b40, msg=..., metaTypes=..., slotIdx=1) at qdbusintegrator.cpp:942
        context = {connection = {static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x495560 "QDBusConnection", data = 0x495780, 
                extradata = 0x0}}, d = 0x8072508}, message = @0x8081548}
        old = 0x0
        ptr = {o = 0x8068b40}
        params = {a = 10, s = 1, ptr = 0xbffff17c, {
            array = "\000\000\000\000\064\362\377\277\354\024\b\b\021\001\000\000on+\000\064\362\377\277X\320<\000\000\000\000\000\252\000\034\000\320\005\b\b(\024\b\b\364\357<", q_for_alignment_1 = -4611701188251877376, 
            q_for_alignment_2 = -1.9966316223144531}}
        i = 0
        outputArgs = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        fail = false
        auxParameters = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        pCount = 0
#7  0x00450e16 in QDBusConnectionPrivate::activateCall (this=0x8072508, 
    object=0x8068b40, flags=273, msg=...) at qdbusintegrator.cpp:845
---Type <return> to continue, or q <return> to quit---
        mo = 0x80814ec
        memberName = {static shared_null = {ref = {_q_value = 275}, alloc = 0, 
            size = 0, data = 0x3d0ef8 "", array = ""}, static shared_empty = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x3d0ee4 "", array = ""}, 
          d = 0x8080008}
        slotData = {flags = 273, slotIdx = 26, metaTypes = {{p = {
                static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, 
                  end = 0, sharable = 1, array = {0x0}}, d = 0x8081048}, 
              d = 0x8081048}}}
        cachePropertyName = "_qdbus_slotCache"
        slotCache = {hash = {<QHash<QString, QDBusSlotCache::Data>> = {{
                d = 0x8080ff8, e = 0x8080ff8}}, <No data fields>}}
        cacheKey = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x80633f2, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 3}, 
            alloc = 0, size = 0, data = 0x3d0fbe, clean = 0, simpletext = 0, 
            righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
              0}}, d = 0x8081258, static codecForCStrings = 0x0}
        signature = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x80633f2, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 3}, 
            alloc = 0, size = 0, data = 0x3d0fbe, clean = 0, simpletext = 0, 
            righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
              0}}, d = 0x3d0fac, static codecForCStrings = 0x0}
#8  0x00451764 in QDBusConnectionPrivate::activateObject (this=0x8072508, node=..., 
    msg=..., pathStartPos=-1073745216) at qdbusintegrator.cpp:1430
        interfaceFound = true
        connector = 0x8068930
#9  0x00451978 in QDBusActivateObjectEvent::placeMetaCall (this=0x8081508)
    at qdbusintegrator.cpp:1524
No locals.
#10 0x002b01f2 in QObject::event (this=0xbffff78c, e=0x8081508)
    at kernel/qobject.cpp:1217
        mce = 0x8081508
        currentSender = {sender = 0x8072508, signal = -1, ref = 1}
        previousSender = 0x0
#11 0x002984fa in QCoreApplication::event (this=0xbffff78c, e=0x8081508)
    at kernel/qcoreapplication.cpp:1560
No locals.
#12 0x00298169 in QCoreApplicationPrivate::notify_helper (this=0x80648c0, 
    receiver=0xbffff78c, event=0x8081508) at kernel/qcoreapplication.cpp:866
No locals.
#13 0x002981e8 in QCoreApplication::notify (this=0xbffff78c, receiver=0xbffff78c, 
    event=0x8081508) at kernel/qcoreapplication.cpp:812
---Type <return> to continue, or q <return> to quit---
        d = 0x80648c0
#14 0x00297f1e in QCoreApplication::notifyInternal (this=0xbffff78c, 
    receiver=0xbffff78c, event=0x8081508) at kernel/qcoreapplication.cpp:731
        threadData = 0x8064948
        returnValue = <optimized out>
        result = false
        cbdata = {0xbffff78c, 0x8081508, 0xbffff49f}
        d = <optimized out>
#15 0x0029b6f3 in sendEvent (event=<optimized out>, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
No locals.
#16 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, 
    data=0x8064948) at kernel/qcoreapplication.cpp:1372
        e = 0x8081508
        r = 0xbffff78c
        locker = {val = 134629744}
        startOffset = 0
#17 0x0029b84c in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at kernel/qcoreapplication.cpp:1265
        data = <optimized out>
#18 0x002c5d74 in sendPostedEvents ()
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
No locals.
#19 postEventSourceDispatch (s=0x80683b8) at kernel/qeventdispatcher_glib.cpp:277
        source = 0x80683b8
#20 0x008d0e1f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#21 0x008d1550 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#22 0x008d17ea in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#23 0x002c61aa in QEventDispatcherGlib::processEvents (this=0x8065608, flags=...)
    at kernel/qeventdispatcher_glib.cpp:422
        d = 0x8065618
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#24 0x00296f5d in QEventLoop::processEvents (this=0xbffff744, flags=...)
    at kernel/qeventloop.cpp:149
        d = 0x8080ef0
#25 0x002971a1 in QEventLoop::exec (this=0xbffff744, flags=...)
    at kernel/qeventloop.cpp:201
        d = 0x8080ef0
        app = 0xbffff6fc
#26 0x0029b8fd in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008
---Type <return> to continue, or q <return> to quit---
        threadData = 0x8064948
        eventLoop = {<QObject> = {_vptr.QObject = 0x3ce448, 
            static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x359d20 "QObject", data = 0x359dc0, 
                extradata = 0x3c93a0}}, d_ptr = {d = 0x8080ef0}, 
            static staticQtMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x362900 "Qt", data = 0x366180, extradata = 0x0}}}, 
          static staticMetaObject = {d = {superdata = 0x80634a0, 
              stringdata = 0x36c080 "QEventLoop", data = 0x36c0a0, extradata = 0x0}}}
        returnCode = <optimized out>
#27 0x0804ce9a in main (argc=2, argv=0xbffff864)
    at /build/buildd/qapt-1.1.90/src/worker/main.cpp:27
        worker = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x805c068, 
              static staticMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x359d20 "QObject", data = 0x359dc0, 
                  extradata = 0x3c93a0}}, d_ptr = {d = 0x80648c0}, 
              static staticQtMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x362900 "Qt", data = 0x366180, extradata = 0x0}}}, 
            static staticMetaObject = {d = {superdata = 0x80634a0, 
                stringdata = 0x36c120 "QCoreApplication", data = 0x36c1c0, 
                extradata = 0x0}}, static self = 0x0}, <QDBusContext> = {
            d_ptr = 0xbffff12c}, static staticMetaObject = {d = {
              superdata = 0x80634c0, stringdata = 0x805b460 "QAptWorker", 
              data = 0x805bc00, extradata = 0x0}}, m_child_pid = -1073743928, 
          m_cache = 0x8099f08, m_policy = 0x2, m_records = 0x809f528, 
          m_systemLocked = false, m_questionResponse = {{d = 0x8063440, 
              e = 0x8063440}}, m_acquireStatus = 0x82248b0, m_questionBlock = 0x0, 
          m_xapianProc = 0x805b14b, m_dpkgProcess = 0x845ff4}
Comment 17 Jonathan Thomas 2011-08-10 11:34:34 UTC
Could you try replacing "int" on lines 169 and 171? I realized that while division-by-zero is the most common floating point error crash, integer overflow is also a SIGFPE.
Comment 18 Jonathan Thomas 2011-08-10 11:35:04 UTC
er, replacing "int" with "unsigned long"
Comment 19 shani 2011-08-10 14:16:36 UTC
can i do it in runtime ... during debuging or do i need to recompile the package after the changes ?
plus line 169 171 of what file ?

i not sure think my lines and yours are not numbered the same (a hunch)
Comment 20 Jonathan Thomas 2011-08-10 14:41:44 UTC
Ah, I'm talking about editing src/worker/workeracquireprogress.cpp and recompiling.
Comment 21 shani 2011-08-10 17:13:09 UTC
yeah thats what i figured ... however in the source i have there is no variable in line 171. 
appart from that i will try 
let me know what to do
Comment 22 Jonathan Thomas 2011-08-10 17:47:39 UTC
I meant workeracquire.cpp, oops. :)

Change "int ETA = 0;" to "unsigned long ETA = 0;" and "ETA = (int)((TotalBytes - CurrentBytes) / CurrentCPS);" to "ETA = (unsigned long)((TotalBytes - CurrentBytes) / CurrentCPS);"
Comment 23 shani 2011-08-10 20:20:05 UTC
ok i did just that ... patched, recomiled, reinstalled ... error remains
here is the debugging (bt full) output (a bit different from the original)

#0  0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1
No symbol table info available.
#1  0x08056d1b in WorkerAcquire::Pulse (this=0x82250f8, Owner=0xbfffef34)
    at /home/shani/libqapt-1.1.90/src/worker/workeracquire.cpp:169
        packagePercentage = <optimized out>
        percentage = 0
        speed = -1
        ETA = <optimized out>
#2  0x005165c6 in pkgAcquire::Run(int) () from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#3  0x00513af7 in ListUpdate(pkgAcquireStatus&, pkgSourceList&, int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#4  0x08051145 in QAptWorker::updateCache (this=0xbffff78c)
    at /home/shani/libqapt-1.1.90/src/worker/worker.cpp:210
        result = true
        Lock = <incomplete type>
        fetcher = <incomplete type>
#5  0x0805b131 in QaptworkerAdaptor::qt_metacall (this=0x8068b40, 
    _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0xbffff17c)                           
    at /home/shani/libqapt-1.1.90/obj-i686-linux-gnu/src/worker/qaptworkeradaptor.moc:210                                                                                     
No locals.                                                                             
#6  0x0044fce7 in ?? () from /usr/lib/libQtDBus.so.4                                   
No symbol table info available.                                                        
#7  0x00450e16 in ?? () from /usr/lib/libQtDBus.so.4                                   
No symbol table info available.
#8  0x00451764 in ?? () from /usr/lib/libQtDBus.so.4
No symbol table info available.
#9  0x00451978 in ?? () from /usr/lib/libQtDBus.so.4
No symbol table info available.
#10 0x002b01f2 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#11 0x002984fa in QCoreApplication::event(QEvent*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#12 0x00298169 in QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#13 0x002981e8 in QCoreApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#14 0x00297f1e in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#15 0x0029b6f3 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#16 0x0029b84c in QCoreApplication::sendPostedEvents(QObject*, int) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#17 0x002c5d74 in ?? () from /usr/lib/libQtCore.so.4
No symbol table info available.
#18 0x008d0e1f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#19 0x008d1550 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#20 0x008d17ea in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#21 0x002c61aa in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#22 0x00296f5d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#23 0x002971a1 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
No symbol table info available.
#24 0x0029b8fd in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
No symbol table info available.
#25 0x0804ce9a in main (argc=2, argv=0xbffff864)
    at /home/shani/libqapt-1.1.90/src/worker/main.cpp:27
        worker = {<QCoreApplication> = {<No data fields>}, <QDBusContext> = {
            d_ptr = 0xbffff12c}, static staticMetaObject = {d = {
              superdata = 0x80634c0, stringdata = 0x805b660 "QAptWorker", 
              data = 0x805bb20, extradata = 0x0}}, m_child_pid = 134623220, m_cache = 
    0x80981f0, m_policy = 0x2, m_records = 0x809e810, m_systemLocked = false, 
          m_questionResponse = {{d = 0x8063440, e = 0x8063440}}, 
          m_acquireStatus = 0x82250f8, m_questionBlock = 0x0, 
          m_xapianProc = 0x805b149, m_dpkgProcess = 0x845ff4}
Comment 24 Jonathan Thomas 2011-08-10 21:02:50 UTC
Git commit 3c2ba4948b47a60249a3cf9f63b528610b0cdfe2 by Jonathan Thomas.
Committed on 10/08/2011 at 23:02.
Pushed by jmthomas into branch 'master'.

Another shot at bug 279690

CCBUG:279690

M  +3    -4    src/worker/workeracquire.cpp

http://commits.kde.org/libqapt/3c2ba4948b47a60249a3cf9f63b528610b0cdfe2
Comment 25 Jonathan Thomas 2011-08-10 21:03:19 UTC
Could you see if that helps?
Comment 26 shani 2011-08-10 21:57:59 UTC
nope ... sorry
Comment 27 Jonathan Thomas 2011-08-11 00:37:37 UTC
Are you sure you're applying the fix right?
Comment 28 shani 2011-08-11 03:34:31 UTC
upgraded and ran debug again:
bt full (a little different)

#0  0x006b8638 in __udivdi3 () from /lib/i386-linux-gnu/libgcc_s.so.1
No symbol table info available.
#1  0x08056d1b in WorkerAcquire::Pulse (this=0x8225a28, Owner=0xbfffef34)
    at /build/buildd/qapt-1.1.90/src/worker/workeracquire.cpp:169
        packagePercentage = <optimized out>
        percentage = 0
        speed = -1
        ETA = <optimized out>
#2  0x005165c6 in pkgAcquire::Run(int) () from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#3  0x00513af7 in ListUpdate(pkgAcquireStatus&, pkgSourceList&, int) ()
   from /usr/lib/libapt-pkg.so.4.11
No symbol table info available.
#4  0x08051145 in QAptWorker::updateCache (this=0xbffff78c)
    at /build/buildd/qapt-1.1.90/src/worker/worker.cpp:210
        result = true
        Lock = <incomplete type>
        fetcher = <incomplete type>
#5  0x0805b131 in QaptworkerAdaptor::qt_metacall (this=0x8068b40, 
    _c=QMetaObject::InvokeMetaMethod, _id=22, _a=0xbffff17c)
    at /build/buildd/qapt-1.1.90/obj-i686-linux-gnu/src/worker/qaptworkeradaptor.moc:210
No locals.
#6  0x0044fce7 in QDBusConnectionPrivate::deliverCall (this=0x8072508, object=
    0x8068b40, msg=..., metaTypes=..., slotIdx=1) at qdbusintegrator.cpp:942
        context = {connection = {static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x495560 "QDBusConnection", data = 0x495780, 
                extradata = 0x0}}, d = 0x8072508}, message = @0x8081518}
        old = 0x0
        ptr = {o = 0x8068b40}
        params = {a = 10, s = 1, ptr = 0xbffff17c, {
            array = "\000\000\000\000\064\362\377\277d\025\b\b\021\001\000\000on+\000\064\362\377\277X\320<\000\000\000\000\000\252\000\034\000\320\021\b\b@\024\b\b\364\357<", q_for_alignment_1 = -4611701188251877376, q_for_alignment_2 = -1.9966316223144531}}
        i = 0
        outputArgs = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        fail = false
        auxParameters = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, 
                begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8063488}, 
            d = 0x8063488}}
        pCount = 0
#7  0x00450e16 in QDBusConnectionPrivate::activateCall (this=0x8072508, 
    object=0x8068b40, flags=273, msg=...) at qdbusintegrator.cpp:845
        mo = 0x8081564
---Type <return> to continue, or q <return> to quit---
        memberName = {static shared_null = {ref = {_q_value = 275}, alloc = 0, 
            size = 0, data = 0x3d0ef8 "", array = ""}, static shared_empty = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x3d0ee4 "", array = ""}, 
          d = 0x8080168}
        slotData = {flags = 273, slotIdx = 26, metaTypes = {{p = {
                static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, 
                  end = 0, sharable = 1, array = {0x0}}, d = 0x8081240}, 
              d = 0x8081240}}}
        cachePropertyName = "_qdbus_slotCache"
        slotCache = {hash = {<QHash<QString, QDBusSlotCache::Data>> = {{
                d = 0x8081268, e = 0x8081268}}, <No data fields>}}
        cacheKey = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x80633f2, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 3}, 
            alloc = 0, size = 0, data = 0x3d0fbe, clean = 0, simpletext = 0, 
            righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
              0}}, d = 0x80805b8, static codecForCStrings = 0x0}
        signature = {static null = {<No data fields>}, static shared_null = {ref = {
              _q_value = 1}, alloc = 0, size = 0, data = 0x80633f2, clean = 0, 
            simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, 
            reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 3}, 
            alloc = 0, size = 0, data = 0x3d0fbe, clean = 0, simpletext = 0, 
            righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
              0}}, d = 0x3d0fac, static codecForCStrings = 0x0}
#8  0x00451764 in QDBusConnectionPrivate::activateObject (this=0x8072508, node=..., 
    msg=..., pathStartPos=-1073745216) at qdbusintegrator.cpp:1430
        interfaceFound = true
        connector = 0x8068930
#9  0x00451978 in QDBusActivateObjectEvent::placeMetaCall (this=0x80814d8)
    at qdbusintegrator.cpp:1524
No locals.
#10 0x002b01f2 in QObject::event (this=0xbffff78c, e=0x80814d8)
    at kernel/qobject.cpp:1217
        mce = 0x80814d8
        currentSender = {sender = 0x8072508, signal = -1, ref = 1}
        previousSender = 0x0

#11 0x002984fa in QCoreApplication::event (this=0xbffff78c, e=0x80814d8)
    at kernel/qcoreapplication.cpp:1560
No locals.
#12 0x00298169 in QCoreApplicationPrivate::notify_helper (this=0x80648c0, 
    receiver=0xbffff78c, event=0x80814d8) at kernel/qcoreapplication.cpp:866
No locals.
#13 0x002981e8 in QCoreApplication::notify (this=0xbffff78c, receiver=0xbffff78c, 
    event=0x80814d8) at kernel/qcoreapplication.cpp:812
        d = 0x80648c0
---Type <return> to continue, or q <return> to quit---
#14 0x00297f1e in QCoreApplication::notifyInternal (this=0xbffff78c, 
    receiver=0xbffff78c, event=0x80814d8) at kernel/qcoreapplication.cpp:731
        threadData = 0x8064948
        returnValue = <optimized out>
        result = false
        cbdata = {0xbffff78c, 0x80814d8, 0xbffff49f}
        d = <optimized out>
#15 0x0029b6f3 in sendEvent (event=<optimized out>, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
No locals.
#16 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, 
    data=0x8064948) at kernel/qcoreapplication.cpp:1372
        e = 0x80814d8
        r = 0xbffff78c
        locker = {val = 134629744}
        startOffset = 0
#17 0x0029b84c in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at kernel/qcoreapplication.cpp:1265
        data = <optimized out>
#18 0x002c5d74 in sendPostedEvents ()
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
No locals.
#19 postEventSourceDispatch (s=0x80683b8) at kernel/qeventdispatcher_glib.cpp:277
        source = 0x80683b8
#20 0x008d0e1f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#21 0x008d1550 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#22 0x008d17ea in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#23 0x002c61aa in QEventDispatcherGlib::processEvents (this=0x8065608, flags=...)
    at kernel/qeventdispatcher_glib.cpp:422
        d = 0x8065618
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#24 0x00296f5d in QEventLoop::processEvents (this=0xbffff744, flags=...)
    at kernel/qeventloop.cpp:149
        d = 0x8080eb8
#25 0x002971a1 in QEventLoop::exec (this=0xbffff744, flags=...)
    at kernel/qeventloop.cpp:201
        d = 0x8080eb8
        app = 0xbffff6fc
#26 0x0029b8fd in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008
        threadData = 0x8064948
---Type <return> to continue, or q <return> to quit---
        eventLoop = {<QObject> = {_vptr.QObject = 0x3ce448, 
            static staticMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x359d20 "QObject", data = 0x359dc0, 
                extradata = 0x3c93a0}}, d_ptr = {d = 0x8080eb8}, 
            static staticQtMetaObject = {d = {superdata = 0x0, 
                stringdata = 0x362900 "Qt", data = 0x366180, extradata = 0x0}}}, 
          static staticMetaObject = {d = {superdata = 0x80634a0, 
              stringdata = 0x36c080 "QEventLoop", data = 0x36c0a0, extradata = 0x0}}}
        returnCode = <optimized out>
#27 0x0804ce9a in main (argc=2, argv=0xbffff864)
    at /build/buildd/qapt-1.1.90/src/worker/main.cpp:27
        worker = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x805c068, 
              static staticMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x359d20 "QObject", data = 0x359dc0, 
                  extradata = 0x3c93a0}}, d_ptr = {d = 0x80648c0}, 
              static staticQtMetaObject = {d = {superdata = 0x0, 
                  stringdata = 0x362900 "Qt", data = 0x366180, extradata = 0x0}}}, 
            static staticMetaObject = {d = {superdata = 0x80634a0, 
                stringdata = 0x36c120 "QCoreApplication", data = 0x36c1c0, 
                extradata = 0x0}}, static self = 0x0}, <QDBusContext> = {
            d_ptr = 0xbffff12c}, static staticMetaObject = {d = {
              superdata = 0x80634c0, stringdata = 0x805b460 "QAptWorker", 
              data = 0x805bc00, extradata = 0x0}}, m_child_pid = -1073743928, 
          m_cache = 0x809cea0, m_policy = 0x2, m_records = 0x809c730, 
          m_systemLocked = false, m_questionResponse = {{d = 0x8063440, 
              e = 0x8063440}}, m_acquireStatus = 0x8225a28, m_questionBlock = 0x0, 
          m_xapianProc = 0x805b14b, m_dpkgProcess = 0x845ff4}
Comment 29 shani 2011-08-11 03:36:48 UTC
pretty sure ... 
but just to be on the safe side ... can you let me know exactly what i should do
i'll try again when i get back from work tonight. :)
Comment 30 Jonathan Thomas 2011-08-11 03:38:06 UTC
The backtrace shows that you're using the Ubuntu packages, and not a self-compiled version with the fix. I'm fairly sure that this fix should work, so I'll go ahead with the 1.2.0 release tomorrow, and you can see if things work after the upgrade.
Comment 31 shani 2011-08-11 16:43:10 UTC
sorry about that ... first of all, i did not change the control file when compiling the package, further more i must have inadvertently installed the old packaged when i upgraded. (due to not changing the control file package number was smaller than the package in the repositories. i must have forgot to hold it back when upgrading. so again a thousand apologies for missleading you. i recompiled and tried again ... and it seem to be working. and then downgraded to verify. looking forward for your fix.
Comment 32 Jonathan Thomas 2011-08-11 21:56:43 UTC
No problem. :) It's better to be safe than sorry.
Comment 33 Jonathan Thomas 2011-08-11 21:56:49 UTC
*** Bug 279913 has been marked as a duplicate of this bug. ***
Comment 34 shani 2011-08-12 18:54:00 UTC
hey ... thanks again for the attention ... installed qapt 1.2 in upgrade ... as expected problem solved ... it was an educational experience for me.