Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 27492 Details for
Bug 41515
KGet crashes after QT 3.3 upgrade
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
kdenetwork-3.2.1-kget-crash.patch
kdenetwork-3.2.1-kget-crash.patch (text/plain), 5.87 KB, created by
Jani-Matti Hätinen
on 2004-03-16 12:54:00 UTC
(
hide
)
Description:
kdenetwork-3.2.1-kget-crash.patch
Filename:
MIME Type:
Creator:
Jani-Matti Hätinen
Created:
2004-03-16 12:54:00 UTC
Size:
5.87 KB
patch
obsolete
>diff -r -u kdenetwork-3.2.1-fixed/kget/slave.cpp kdenetwork-3.2.1/kget/slave.cpp >--- kdenetwork-3.2.1/kget/slave.cpp 2004-02-28 11:52:37.000000000 +0200 >+++ kdenetwork-3.2.1-fixed/kget/slave.cpp 2004-03-16 22:14:27.707055568 +0200 >@@ -63,8 +63,9 @@ > mutex.lock(); > stack.push(_cmd); > nPendingCommand++; >- worker.wakeOne(); > mutex.unlock(); >+ //worker.wakeOne(); after mutex.unlock(); seems better !? >+ worker.wakeOne(); > > mDebugOut << endl; > } >@@ -94,6 +95,16 @@ > } > > >+// Soft Kill the copyjob >+// If You kill an already killed copyjob this cause : Kget get signal 11 and it terminates !!! >+void Slave::softkilljob() >+{ >+ if (copyjob) >+ { >+ copyjob->kill(true); >+ copyjob = NULL; >+ } >+} > > void Slave::run() > { >@@ -109,7 +120,8 @@ > switch (cmd = fetch_cmd()) > { > case RESTART: >- copyjob->kill(true); >+ //copyjob->kill(true); >+ softkilljob(); > // fall through > case RETR: > mDebug << " FETCHED COMMAND RETR" << endl; >@@ -122,51 +134,48 @@ > > case PAUSE: > mDebug << " FETCHED COMMAND PAUSE" << endl; >- copyjob->kill(true); >- copyjob = 0L; >+ // Here there was a BUG ! >+ // You want kill an already killed copyjob ! >+ softkilljob(); >+ //copyjob->kill(true); >+ //copyjob = 0L; > PostMessage(SLV_PAUSED); > break; > > case KILL: > mDebug << " FETCHED COMMAND KILL" << endl; > running = false; >- if (copyjob) >- { >- copyjob->kill(true); >- copyjob = 0L; >- } >+ // Here there was an other BUG ! >+ // You want to kill an already killed copyjob ! >+ softkilljob(); > // no message posted > break; > > case REMOVE: > mDebug << " FETCHED COMMAND REMOVE" << endl; > running = false; >- copyjob->kill(true); >- copyjob = 0L; >+ softkilljob(); > PostMessage(SLV_REMOVED); > break; > > case SCHEDULE: > mDebug << " FETCHED COMMAND SCHEDULE" << endl; >- copyjob->kill(true); >- copyjob = 0L; >+ softkilljob(); > PostMessage(SLV_SCHEDULED); > break; > > case DELAY: > mDebug << " FETCHED COMMAND DELAY" << endl; >- copyjob->kill(true); >- copyjob = 0L; >+ softkilljob(); > PostMessage(SLV_DELAYED); > break; >- >+ >+ //Soft Thread Termination >+ case SOFTTERM: >+ > case NOOP: > mDebug << "FETCHED COMMAND NOOP, i.e. empty stack" << endl; >- if ( copyjob ) >- { >- copyjob->kill(true); >- copyjob = 0L; >- } >+ softkilljob(); > running = false; > break; > >@@ -177,7 +186,8 @@ > } > } > >- copyjob = NULL; >+ // not needed !? >+ //copyjob = NULL; > mDebugOut << endl; > } > >@@ -238,13 +248,21 @@ > mDebugIn << endl; > if (job->error()) { > InfoMessage(job->errorString()); >- terminate(); // AEEIIII! >- wait(); >+ // DO NOT KILL a copyjob already finished ! This cause crash ! >+ copyjob=NULL; >+ Op(SOFTTERM); >+ // NOT SAFE !!! >+ //terminate(); // AEEIIII! >+ //wait(); > PostMessage(SLV_DELAYED); > } else > { >- terminate(); // AEEIIII! >- wait(); >+ // DO NOT KILL a copyjob already finished ! This cause crash ! >+ copyjob=NULL; >+ Op(SOFTTERM); >+ // NOT SAFE !!! >+ //terminate(); // AEEIIII! >+ //wait(); > PostMessage(SLV_FINISHED); > } > mDebugOut << endl; >Only in kdenetwork-3.2.1/kget: slave.cpp~ >diff -r -u kdenetwork-3.2.1-fixed/kget/slave.h kdenetwork-3.2.1/kget/slave.h >--- kdenetwork-3.2.1/kget/slave.h 2003-07-28 10:53:27.000000000 +0300 >+++ kdenetwork-3.2.1-fixed/kget/slave.h 2004-03-16 22:07:10.619502976 +0200 >@@ -50,7 +50,8 @@ > public: > enum SlaveCommand { > RETR, PAUSE, RESTART, ABORT, DELAY, >- SCHEDULE, REMOVE, KILL, NOOP >+ //added SOFTTERM >+ SCHEDULE, REMOVE, KILL, NOOP, SOFTTERM > }; > > enum SlaveResult { >@@ -78,6 +79,8 @@ > void slotProcessedSize(KIO::Job *, KIO::filesize_t); > void slotSpeed(KIO::Job *, unsigned long); > void slotInfoMessage(KIO::Job *, const QString &); >+ // soft kill the copyjob >+ void softkilljob(); > > private: > void Connect(); >diff -r -u kdenetwork-3.2.1-fixed/kget/transfer.cpp kdenetwork-3.2.1/kget/transfer.cpp >--- kdenetwork-3.2.1/kget/transfer.cpp 2004-02-28 11:52:37.000000000 +0200 >+++ kdenetwork-3.2.1-fixed/kget/transfer.cpp 2004-03-16 22:07:10.617503280 +0200 >@@ -47,6 +47,8 @@ > #include <kio/passdlg.h> > #include <kio/global.h> > #include <kio/netaccess.h> >+// for usleep >+#include <unistd.h> > > > extern Settings ksettings; >@@ -160,19 +162,35 @@ > > void Transfer::synchronousAbort() > { >+ int i=0; >+ > if ( m_pSlave ) > { >- if ( m_pSlave->running() ) >+ while ( (m_pSlave->running()) && (i<10) ) > { >+ // fprintf(stderr,"trying Soft Syncronous Abort ...\n"); > m_pSlave->Op(Slave::KILL); >- m_pSlave->wait(); >+ // wait 100ms >+ usleep(100000); >+ // max 1 s >+ i++; >+ //m_pSlave->wait(); !NOT SAFE! > } > > if ( m_pSlave->running() ) >+ { >+ fprintf(stderr,"SyncronousAbort Soft failed ! This is not SAFE !!! --> Hard Kill !!!\n"); > m_pSlave->terminate(); >+ m_pSlave->wait(); >+ } > >+ if ( m_pSlave->running() ) >+ { >+ fprintf(stderr,"If this happen there is a BIG PROBLEM !!!\n"); >+ } else { > delete m_pSlave; > m_pSlave = 0L; >+ } > > status = ST_STOPPED; > slotUpdateActions();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 41515
: 27492 |
28322