[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: [Amarok] Fix memory and file leaks w/in libmp3tunes
From:       Téo_Mrnjavac <teo () getamarok ! com>
Date:       2009-08-22 6:05:13
Message-ID: cd6a44790908212305h122d79e2q9884ff76a6e39977 () mail ! gmail ! com
[Download RAW message or body]

On Sat, Aug 22, 2009 at 5:36 AM, Erik Hovland<erik@hovland.org> wrote:
> commit 92ca4ede8d26f861020a7f5bd7aa88df19696cce
> Author:     Erik Hovland <erik@hovland.org>
> AuthorDate: Fri Aug 21 08:15:13 2009 -0700
> Commit:     Erik Hovland <erik@hovland.org>
> CommitDate: Fri Aug 21 20:28:52 2009 -0700
> 
> Fix memory and file leaks w/in libmp3tunes
> 
> libmp3tunes is riddled w/ leaks. This should close many of them.
> 
> diff --git a/src/services/mp3tunes/libmp3tunes/harmony.c \
> b/src/services/mp3tunes/libmp3tunes/harmony.c index fdc54b9..02eb695 100644
> --- a/src/services/mp3tunes/libmp3tunes/harmony.c
> +++ b/src/services/mp3tunes/libmp3tunes/harmony.c
> @@ -727,11 +727,14 @@ void mp3tunes_harmony_set_email(MP3tunesHarmony *harmony, \
> char *email) { void mp3tunes_harmony_set_device_attribute(MP3tunesHarmony *harmony, \
> const char *attribute, ...) { va_list argp;
> mp3tunes_harmony_device_attribute_t* da;
> -    da = (mp3tunes_harmony_device_attribute_t*)malloc(sizeof(mp3tunes_harmony_device_attribute_t));
>  
> GList *current = NULL;
> mp3tunes_harmony_device_attribute_t *current_da;
> 
> +    da = (mp3tunes_harmony_device_attribute_t*)malloc(sizeof(mp3tunes_harmony_device_attribute_t));
>  +    if (da == NULL)
> +        return;
> +
> va_start(argp, attribute);
> 
> if (strcmp(attribute, "device-description") == 0) {
> @@ -748,6 +751,7 @@ void mp3tunes_harmony_set_device_attribute(MP3tunesHarmony \
> *harmony, const char da->attribute_value_type = \
> MP3TUNES_HARMONY_DEVICE_ATTRIBUTE_TYPE_INT; } else {
> va_end(argp);
> +        free(da);
> return;
> }
> 
> diff --git a/src/services/mp3tunes/libmp3tunes/locker.c \
> b/src/services/mp3tunes/libmp3tunes/locker.c index b10c40f..5e7edc9 100644
> --- a/src/services/mp3tunes/libmp3tunes/locker.c
> +++ b/src/services/mp3tunes/libmp3tunes/locker.c
> @@ -83,10 +83,14 @@ size_t write_chunk_callback( void *ptr, size_t size, size_t \
> nmemb, void *data ) 
> xml_xpath_t* xml_xpath_init(xmlDocPtr document) {
> xml_xpath_t *result = malloc(sizeof(xml_xpath_t));
> +    if (result == NULL)
> +        return NULL;
> +
> result->document = document;
> result->xpath_ctx = xmlXPathNewContext(result->document);
> if(result->xpath_ctx == NULL) {
> xmlFreeDoc(result->document);
> +        free(result);
> return NULL;
> }
> result->context = NULL;
> @@ -96,10 +100,14 @@ xml_xpath_t* xml_xpath_init(xmlDocPtr document) {
> 
> xml_xpath_t* xml_xpath_context_init(xml_xpath_t* xml_xpath, xmlNodePtr node) {
> xml_xpath_t *result = malloc(sizeof(xml_xpath_t));
> +    if (result == NULL)
> +        return NULL;
> +
> result->document = xml_xpath->document;
> result->xpath_ctx = xmlXPathNewContext(result->document);
> if(result->xpath_ctx == NULL) {
> xmlFreeDoc(result->document);
> +        free(result);
> return NULL;
> }
> result->xpath_ctx->node = node;
> @@ -260,7 +268,7 @@ static request_t* \
> mp3tunes_locker_api_generate_request_valist(mp3tunes_locker_ob break;
> }
> 
> -    char *url;
> +    char *url = 0;
> size_t url_size = asprintf(&url, "http://%s/%s?", server_url, path) +1;
> name = (char*) first_name;
> while (name) {
> @@ -291,6 +299,7 @@ static request_t* \
> mp3tunes_locker_api_generate_request_valist(mp3tunes_locker_ob }
> } else {
> printf("Failed because of no session id\n");
> +            free(url);
> mp3tunes_request_deinit(&request);
> return NULL;
> }
> @@ -328,6 +337,11 @@ static xml_xpath_t* \
> mp3tunes_locker_api_simple_fetch(mp3tunes_locker_object_t *o 
> va_end(argp);
> 
> +    if (request == NULL) {
> +        chunk_deinit(&chunk);
> +        return NULL;
> +    }
> +
> curl_easy_setopt( request->curl, CURLOPT_URL, request->url );
> curl_easy_setopt( request->curl, CURLOPT_WRITEFUNCTION, write_chunk_callback );
> curl_easy_setopt( request->curl, CURLOPT_WRITEDATA, (void *)chunk );
> @@ -336,6 +350,7 @@ static xml_xpath_t* \
> mp3tunes_locker_api_simple_fetch(mp3tunes_locker_object_t *o 
> res = curl_easy_perform(request->curl);
> curl_easy_cleanup(request->curl);
> +    free(request);
> 
> if (res != CURLE_OK) {
> chunk_deinit(&chunk);
> @@ -367,6 +382,10 @@ static xml_xpath_t* \
> mp3tunes_locker_api_post_fetch(mp3tunes_locker_object_t *obj chunk_init(&chunk);
> 
> request = mp3tunes_locker_api_generate_request(obj, server, path, NULL);
> +    if (request == NULL) {
> +        chunk_deinit(&chunk);
> +        return NULL;
> +    }
> 
> curl_easy_setopt( request->curl, CURLOPT_URL, request->url );
> curl_easy_setopt( request->curl, CURLOPT_WRITEFUNCTION, write_chunk_callback );
> @@ -377,6 +396,7 @@ static xml_xpath_t* \
> mp3tunes_locker_api_post_fetch(mp3tunes_locker_object_t *obj 
> res = curl_easy_perform(request->curl);
> curl_easy_cleanup(request->curl);
> +    free(request);
> 
> if (res != CURLE_OK) {
> chunk_deinit(&chunk);
> @@ -466,6 +486,10 @@ int mp3tunes_locker_session_valid(mp3tunes_locker_object_t \
> *obj) { chunk_init(&chunk);
> 
> request = mp3tunes_locker_api_generate_request(obj, MP3TUNES_SERVER_API, \
> "api/v1/accountData", NULL); +    if (request == NULL) {
> +        chunk_deinit(&chunk);
> +        return -1;
> +    }
> 
> curl_easy_setopt( request->curl, CURLOPT_URL, request->url );
> curl_easy_setopt( request->curl, CURLOPT_WRITEFUNCTION, write_chunk_callback );
> @@ -477,6 +501,7 @@ int mp3tunes_locker_session_valid(mp3tunes_locker_object_t \
> *obj) { 
> res = curl_easy_perform(request->curl);
> curl_easy_cleanup(request->curl);
> +    free(request);
> 
> if (res != CURLE_OK) {
> chunk_deinit(&chunk);
> @@ -489,20 +514,20 @@ int mp3tunes_locker_session_valid(mp3tunes_locker_object_t \
> *obj) { 
> char name[] = "X-MP3tunes-ErrorNo";
> char value[] = "401001";
> -    char * result;
> -    result = strstr (chunk->data, name);
> -    if(result != 0)
> +    char *result = strstr (chunk->data, name);
> +    if (result != 0)
> {
> -        int i;
> -        i=strcspn(result, "\n");
> -        char * result1 = ( char * ) malloc( i+1 );
> +        int i = strcspn(result, "\n");
> +        char *result1 = malloc(i + 1);
> +        if (result1 == NULL)
> +            return -1;
> +
> strncpy(result1, result, i);
> /*printf("Header String: %s\n", result1);*/
> -        result = strstr (result1, value);
> -        if(result1 != 0) /*i.e., value could not be located hence there is no 404 \
>                 error.*/
> -        {
> +        result = strstr(result1, value);
> +        free(result1);
> +        if (result != 0) /* i.e., value could not be located hence there is no 404 \
> error. */ return -1; /* session is invalid*/
> -        }
> }
> 
> /*printf("Fetch result:\n%s\n", chunk->data);*/
> @@ -1363,8 +1388,12 @@ int mp3tunes_locker_sync_down(mp3tunes_locker_object_t *obj, \
> char* type, char* b xmlFreeTextWriter(writer);
> 
> xml_xpath = mp3tunes_locker_api_post_fetch(obj, MP3TUNES_SERVER_API, \
> "api/v1/lockerSync/", (char*)buf->content); +    if( xml_xpath == NULL)
> +        return -1;
> +
> printf("Sync:\n%s\n", (const char *) buf->content);
> 
> +    free(xml_xpath);
> xmlBufferFree(buf);
> return 0;
> }
> @@ -1432,13 +1461,17 @@ int mp3tunes_locker_upload_track(mp3tunes_locker_object_t \
> *obj, const char *path FILE * hd_src ;
> int hd ;
> struct stat file_info;
> -    char* file_key = malloc(4096*sizeof(char));
> -    file_key = mp3tunes_locker_generate_filekey(path);
> +    char* file_key = mp3tunes_locker_generate_filekey(path);
> +
> +    if (file_key == NULL)
> +        return -1;
> 
> /* get the file size of the local file */
> hd = open(path, O_RDONLY);
> -    if (hd == -1)
> +    if (hd == -1) {
> +        free(file_key);
> return -1;
> +    }
> 
> fstat(hd, &file_info);
> close(hd);
> @@ -1448,7 +1481,12 @@ int mp3tunes_locker_upload_track(mp3tunes_locker_object_t \
> *obj, const char *path /* create the request url */
> char *url = malloc(256*sizeof(char));
> snprintf(url, 256, "storage/lockerput/%s", file_key);
> +    free(file_key);
> request = mp3tunes_locker_api_generate_request(obj, MP3TUNES_SERVER_CONTENT, url, \
> NULL); +    if (request == NULL) {
> +        fclose(hd_src);
> +        return -1;
> +    }
> 
> /*chunk_init(&chunk);*/
> /*curl_easy_setopt( request->curl, CURLOPT_READFUNCTION, read_callback);*/
> @@ -1461,9 +1499,10 @@ int mp3tunes_locker_upload_track(mp3tunes_locker_object_t \
> *obj, const char *path /*printf("uploading...\n");*/
> res = curl_easy_perform(request->curl);
> curl_easy_cleanup(request->curl);
> +    free(request);
> +    free(url);
> 
> fclose(hd_src); /* close the local file */
> -    free(url);
> return 0;
> }
> 
> diff --git a/src/services/mp3tunes/libmp3tunes/md5.c \
> b/src/services/mp3tunes/libmp3tunes/md5.c index 465bbc9..23bcafe 100644
> --- a/src/services/mp3tunes/libmp3tunes/md5.c
> +++ b/src/services/mp3tunes/libmp3tunes/md5.c
> @@ -62,6 +62,7 @@ char* md5_calc_file_signature(const char *filename)
> if (err) {
> fprintf(stderr, "MD5 context creation failure: %s/%s",
> gcry_strsource (err), gcry_strerror (err));
> +    fclose(stream);
> return NULL;
> }
> #else
> @@ -88,6 +89,7 @@ char* md5_calc_file_signature(const char *filename)
> sig = gcry_md_read(md5, GCRY_MD_MD5);
> if (!sig) {
> fprintf(stderr, "Unable to calculate MD5 signature for %s", filename);
> +    fclose(stream);
> return NULL;
> }
> #else
> 
> 
> 

Hello
One of your commits to mp3tunes seems to cause a crash on startup,
please take a look at Thread 8:

Application: Amarok (amarok), signal: Segmentation fault
[Current thread is 0 (LWP 32322)]

Thread 12 (Thread 0x7f38cb691910 (LWP 32323)):
#0  0x00007f38df4cd05d in pthread_cond_timedwait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38d0102581 in metronom_sync_loop () from /usr/lib/libxine.so.1
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7f38ca856910 (LWP 32324)):
#0  0xffffffffff600177 in ?? ()
#1  0x00007fffb9cfc671 in ?? ()
#2  0x00007f38d8cede4f in clock_gettime () from /lib/librt.so.1
#3  0x00007f38e0cb3cfd in ?? () from /usr/lib/libQtCore.so.4
#4  0x00007f38e0cb3ef1 in ?? () from /usr/lib/libQtCore.so.4
#5  0x00007f38e0cb53b3 in ?? () from /usr/lib/libQtCore.so.4
#6  0x00007f38e0cb23ad in ?? () from /usr/lib/libQtCore.so.4
#7  0x00007f38d8a63d8a in g_main_context_prepare () from
/usr/lib/libglib-2.0.so.0
#8  0x00007f38d8a64161 in g_main_context_iterate () from
/usr/lib/libglib-2.0.so.0
#9  0x00007f38d8a64690 in g_main_context_iteration () from
/usr/lib/libglib-2.0.so.0
#10 0x00007f38e0cb222e in QEventDispatcherGlib::processEvents () from
/usr/lib/libQtCore.so.4
#11 0x00007f38e0c88612 in QEventLoop::processEvents () from
/usr/lib/libQtCore.so.4
#12 0x00007f38e0c889e4 in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#13 0x00007f38e0ba152b in QThread::exec () from /usr/lib/libQtCore.so.4
#14 0x00007f38d035b394 in Phonon::Xine::XineThread::run () from
/usr/lib/qt/plugins/phonon_backend/phonon_xine.so
#15 0x00007f38e0ba4285 in ?? () from /usr/lib/libQtCore.so.4
#16 0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#17 0x00007f38dfa0016d in clone () from /lib/libc.so.6
#18 0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f38c9e53910 (LWP 32325)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38d01135c3 in ao_loop () from /usr/lib/libxine.so.1
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f38c9652910 (LWP 32326)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38d01135c3 in ao_loop () from /usr/lib/libxine.so.1
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f38c3fd0910 (LWP 32330)):
[KCrash Handler]
#5  0x00007f38c19c47bb in ConnectionKillOne () from /usr/lib/libcurl.so.4
#6  0x00007f38c19c98d0 in Curl_close () from /usr/lib/libcurl.so.4
#7  0x00007f38c1c22094 in mp3tunes_request_deinit
(request=0x7f38c3fcfc90) at
/home/teo/Development/amarok/src/services/mp3tunes/libmp3tunes/locker.c:244
#8  0x00007f38c1c2274e in mp3tunes_locker_api_simple_fetch
(obj=0x1717170, server=2, path=0x7f38c1c2d611 "api/v1/login/",
first_name=0x7f38c1c2d608 "username")
    at /home/teo/Development/amarok/src/services/mp3tunes/libmp3tunes/locker.c:355
#9  0x00007f38c1c22b92 in mp3tunes_locker_login (obj=0x1717170,
username=0x7f38b8000b18 "teo.mrnjavac@gmail.com", password=[censored])
    at /home/teo/Development/amarok/src/services/mp3tunes/libmp3tunes/locker.c:460
#10 0x00007f38c1c1ad09 in Mp3tunesLocker::login (this=0x1717260,
userName=@0x1716db8, password=@0x1716dc0) at
/home/teo/Development/amarok/src/services/mp3tunes/Mp3tunesLocker.cpp:58
#11 0x00007f38c1c1cf65 in Mp3tunesLoginWorker::run (this=0x1716d90) at
/home/teo/Development/amarok/src/services/mp3tunes/Mp3tunesWorkers.cpp:46
#12 0x00007f38dcdd26bd in ThreadWeaver::JobRunHelper::runTheJob ()
from /usr/lib/libthreadweaver.so.4
#13 0x00007f38dcdd29be in ThreadWeaver::Job::execute () from
/usr/lib/libthreadweaver.so.4
#14 0x00007f38dcdd198f in ThreadWeaver::ThreadRunHelper::run () from
/usr/lib/libthreadweaver.so.4
#15 0x00007f38dcdd1e18 in ThreadWeaver::Thread::run () from
/usr/lib/libthreadweaver.so.4
#16 0x00007f38e0ba4285 in ?? () from /usr/lib/libQtCore.so.4
#17 0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#18 0x00007f38dfa0016d in clone () from /lib/libc.so.6
#19 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f38bf281910 (LWP 32331)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38e0ba534b in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#2  0x00007f38dcdd1286 in
ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned () from
/usr/lib/libthreadweaver.so.4
#3  0x00007f38dcdd33bb in ThreadWeaver::WorkingHardState::applyForWork
() from /usr/lib/libthreadweaver.so.4
#4  0x00007f38dcdd19bf in ThreadWeaver::ThreadRunHelper::run () from
/usr/lib/libthreadweaver.so.4
#5  0x00007f38dcdd1e18 in ThreadWeaver::Thread::run () from
/usr/lib/libthreadweaver.so.4
#6  0x00007f38e0ba4285 in ?? () from /usr/lib/libQtCore.so.4
#7  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#8  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#9  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f38be661910 (LWP 32332)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38be66b71b in mb_thread_func () from /usr/lib/libjack.so.0
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f38bdc57910 (LWP 32338)):
#0  0x00007f38df9f79b3 in poll () from /lib/libc.so.6
#1  0x00007f38bdc5c839 in ao_alsa_handle_event_thread () from
/usr/lib/xine/plugins/1.26/xineplug_ao_out_alsa.so
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f38bd456910 (LWP 32339)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38d01135c3 in ao_loop () from /usr/lib/libxine.so.1
#2  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#3  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f38bcc55910 (LWP 32340)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38e0ba534b in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#2  0x00007f38dcdd1286 in
ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned () from
/usr/lib/libthreadweaver.so.4
#3  0x00007f38dcdd33bb in ThreadWeaver::WorkingHardState::applyForWork
() from /usr/lib/libthreadweaver.so.4
#4  0x00007f38dcdd33d4 in ThreadWeaver::WorkingHardState::applyForWork
() from /usr/lib/libthreadweaver.so.4
#5  0x00007f38dcdd19bf in ThreadWeaver::ThreadRunHelper::run () from
/usr/lib/libthreadweaver.so.4
#6  0x00007f38dcdd1e18 in ThreadWeaver::Thread::run () from
/usr/lib/libthreadweaver.so.4
#7  0x00007f38e0ba4285 in ?? () from /usr/lib/libQtCore.so.4
#8  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#9  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f38b7fff910 (LWP 32341)):
#0  0x00007f38df4ccdd9 in pthread_cond_wait@@GLIBC_2.3.2 () from
/lib/libpthread.so.0
#1  0x00007f38e0ba534b in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#2  0x00007f38dcdd1286 in
ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned () from
/usr/lib/libthreadweaver.so.4
#3  0x00007f38dcdd33bb in ThreadWeaver::WorkingHardState::applyForWork
() from /usr/lib/libthreadweaver.so.4
#4  0x00007f38dcdd19bf in ThreadWeaver::ThreadRunHelper::run () from
/usr/lib/libthreadweaver.so.4
#5  0x00007f38dcdd1e18 in ThreadWeaver::Thread::run () from
/usr/lib/libthreadweaver.so.4
#6  0x00007f38e0ba4285 in ?? () from /usr/lib/libQtCore.so.4
#7  0x00007f38df4c857a in start_thread () from /lib/libpthread.so.0
#8  0x00007f38dfa0016d in clone () from /lib/libc.so.6
#9  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f38e23af7a0 (LWP 32322)):
#0  0x00007f38df9f79b3 in poll () from /lib/libc.so.6
#1  0x00007f38d2d72990 in socket_do_iteration () from /usr/lib/libdbus-1.so.3
#2  0x00007f38d2d70d8d in _dbus_transport_do_iteration () from
/usr/lib/libdbus-1.so.3
#3  0x00007f38d2d5d0ee in _dbus_connection_do_iteration_unlocked ()
from /usr/lib/libdbus-1.so.3
#4  0x00007f38d2d5f542 in _dbus_connection_block_pending_call () from
/usr/lib/libdbus-1.so.3
#5  0x00007f38d2d5eaaf in dbus_connection_send_with_reply_and_block ()
from /usr/lib/libdbus-1.so.3
#6  0x00007f38de0b94c1 in ?? () from /usr/lib/libQtDBus.so.4
#7  0x00007f38de0a3c23 in QDBusConnection::call () from /usr/lib/libQtDBus.so.4
#8  0x00007f38de0bffbc in QDBusAbstractInterface::callWithArgumentList
() from /usr/lib/libQtDBus.so.4
#9  0x00007f38de0c3663 in QDBusAbstractInterface::call () from
/usr/lib/libQtDBus.so.4
#10 0x00007f38de0c3841 in QDBusAbstractInterface::call () from
/usr/lib/libQtDBus.so.4
#11 0x00007f38dc29195b in
Solid::Backends::Hal::HalManager::findDeviceByDeviceInterface () from
/usr/lib/libsolid.so.4
#12 0x00007f38dc293242 in
Solid::Backends::Hal::HalManager::devicesFromQuery () from
/usr/lib/libsolid.so.4
#13 0x00007f38dc25d592 in Solid::Device::listFromQuery () from
/usr/lib/libsolid.so.4
#14 0x00007f38dd045979 in KFilePlacesModel::Private::_k_initDeviceList
() from /usr/lib/libkfile.so.4
#15 0x00007f38dd0472de in KFilePlacesModel::qt_metacall () from
/usr/lib/libkfile.so.4
#16 0x00007f38e0c9ee0c in QMetaObject::activate () from /usr/lib/libQtCore.so.4
#17 0x00007f38e0ca3e4f in ?? () from /usr/lib/libQtCore.so.4
#18 0x00007f38e0c98db3 in QObject::event () from /usr/lib/libQtCore.so.4
#19 0x00007f38e0135e2c in QApplicationPrivate::notify_helper () from
/usr/lib/libQtGui.so.4
#20 0x00007f38e013d0fe in QApplication::notify () from /usr/lib/libQtGui.so.4
#21 0x00007f38e1eeeff6 in KApplication::notify () from /usr/lib/libkdeui.so.5
#22 0x00007f38e0c89d0c in QCoreApplication::notifyInternal () from
/usr/lib/libQtCore.so.4
#23 0x00007f38e0cb5322 in ?? () from /usr/lib/libQtCore.so.4
#24 0x00007f38e0cb228d in ?? () from /usr/lib/libQtCore.so.4
#25 0x00007f38d8a60dbe in g_main_context_dispatch () from
/usr/lib/libglib-2.0.so.0
#26 0x00007f38d8a64568 in g_main_context_iterate () from
/usr/lib/libglib-2.0.so.0
#27 0x00007f38d8a64690 in g_main_context_iteration () from
/usr/lib/libglib-2.0.so.0
#28 0x00007f38e0cb21d6 in QEventDispatcherGlib::processEvents () from
/usr/lib/libQtCore.so.4
#29 0x00007f38e01c8dde in ?? () from /usr/lib/libQtGui.so.4
#30 0x00007f38e0c88612 in QEventLoop::processEvents () from
/usr/lib/libQtCore.so.4
#31 0x00007f38e0c889e4 in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#32 0x00007f38e0c8ab99 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#33 0x00000000004049d1 in main (argc=3, argv=0x7fffb9ca91e8) at
/home/teo/Development/amarok/src/main.cpp:140

Cheers
Téo


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic