So I think I've come up with a reliable way to reproduce this by placing
a corrupted yaml file in /var/lib/app-info.

Here is the file I placed (notice the extra s at the start):

s---
File: DEP-11
MediaBaseUrl: http://appstream.ubuntu.com/media/main
Origin: ubuntu-xenial-backports-main
Priority: 40
Time: '2016-07-28T18:38:36.877230+00:00'
Version: '0.8'

By running fwupd with that in place, it hangs and pegs at 100% CPU.

The BT of course isn't too surprising where it's hung:

#0  0x00007ffff4249b6f in yaml_parser_parse () from 
/usr/lib/x86_64-linux-gnu/libyaml-0.so.2
#1  0x00007ffff779e5eb in as_node_yaml_process_layer 
(parser=parser@entry=0x7fffffffe030, parent=parent@entry=0x555555832c40) at 
as-yaml.c:225
#2  0x00007ffff779eae0 in as_yaml_from_file (file=file@entry=0x555555830560, 
cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffe340) at 
as-yaml.c:371
#3  0x00007ffff7799481 in as_store_load_yaml_file (error=0x7fffffffe340, 
cancellable=0x0, file=0x555555830560, store=0x555555795880) at as-store.c:1129
#4  as_store_from_file_internal (store=store@entry=0x555555795880, 
file=file@entry=0x555555830560, id_prefix=id_prefix@entry=0x7ffff77a29ae 
"system", cancellable=cancellable@entry=0x0, 
    error=error@entry=0x7fffffffe340) at as-store.c:1371
#5  0x00007ffff7799ab7 in as_store_load_app_info_file (error=0x7fffffffe340, 
cancellable=0x0, path_xml=0x555555798460 "/var/lib/app-info/yaml/yaml.yml", 
id_prefix=0x7ffff77a29ae "system", 
    store=0x555555795880) at as-store.c:2068
#6  as_store_load_app_info (store=store@entry=0x555555795880, 
id_prefix=id_prefix@entry=0x7ffff77a29ae "system", 
path=path@entry=0x555555798490 "/var/lib/app-info/yaml", 
    flags=flags@entry=AS_STORE_LOAD_FLAG_APP_INFO_SYSTEM, 
cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffe4d8) at 
as-store.c:2118
#7  0x00007ffff779a131 in as_store_search_app_info 
(store=store@entry=0x555555795880, 
flags=flags@entry=AS_STORE_LOAD_FLAG_APP_INFO_SYSTEM, 
id_prefix=id_prefix@entry=0x7ffff77a29ae "system", 
    path=path@entry=0x555555798430 "/var/lib/app-info", 
cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffe4d8) at 
as-store.c:2333
#8  0x00007ffff779abe4 in as_store_search_per_system (error=<optimized out>, 
cancellable=0x0, flags=<optimized out>, store=<optimized out>) at 
as-store.c:2535
#9  as_store_load (store=<optimized out>, flags=<optimized out>, 
cancellable=0x0, error=<optimized out>) at as-store.c:2683
#10 0x000055555555d9c7 in main ()

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to appstream-glib in Ubuntu.
https://bugs.launchpad.net/bugs/1591868

Title:
  fwupd consuming 100% CPU

Status in appstream-glib package in Ubuntu:
  Confirmed
Status in fwupd package in Ubuntu:
  Incomplete

Bug description:
  fwupd process has been consuming 100% of my CPU for several days now
  (IBM Thinkpad x250 running fully updated 16.04).

  gdb backtrace below.

  Thread 2 (Thread 0x7f3272cf5700 (LWP 4496)):
  #0  0x00007f3279b79e8d in poll () at ../sysdeps/unix/syscall-template.S:84
  No locals.
  #1  0x00007f327ae9331c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  No symbol table info available.
  #2  0x00007f327ae9342c in g_main_context_iteration () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
  No symbol table info available.
  #3  0x00007f327ae93469 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  No symbol table info available.
  #4  0x00007f327aeb9b45 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
  No symbol table info available.
  #5  0x00007f3279e4f6fa in start_thread (arg=0x7f3272cf5700) at 
pthread_create.c:333
          __res = <optimized out>
          pd = 0x7f3272cf5700
          now = <optimized out>
          unwind_buf = {cancel_jmp_buf = {{jmp_buf = {139854651283200, 
418179942412000561, 0, 140731891236207, 
                  139854651283904, 0, -312637405101744847, 
-312613451844084431}, mask_was_saved = 0}}, priv = {pad = {
                0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
canceltype = 0}}}
          not_first_call = <optimized out>
          pagesize_m1 = <optimized out>
          sp = <optimized out>
          freesize = <optimized out>
          __PRETTY_FUNCTION__ = "start_thread"
  #6  0x00007f3279b85b5d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
  No locals.

  Thread 1 (Thread 0x7f327c926900 (LWP 4486)):
  #0  0x00007f3279e542b7 in __GI___pthread_rwlock_rdlock (rwlock=0x7f3279e43920 
<__libc_setlocale_lock>)
      at pthread_rwlock_rdlock.c:135
          result = 0
          wake = false
  #1  0x00007f3279aaf0e9 in __dcigettext (domainname=0x7f327aedee63 "glib20", 
      msgid1=0x7f327b4ca11a "Invalid compressed data", msgid2=0x0, plural=0, 
n=0, category=5) at dcigettext.c:527
          __p = <optimized out>
          domain = <optimized out>
          binding = <optimized out>
          categoryname = <optimized out>
          categoryvalue = <optimized out>
          dirname = <optimized out>
          xdomainname = <optimized out>
          single_locale = <optimized out>
          retval = <optimized out>
          retlen = 93892446493824
          saved_errno = 0
          search = {domainname = 0x7ffeb262bb00 "`\234\353\teU", category = 
166588464, 
            localename = 0x556509ededa8 "p\362\355\teU", counter = 166589040, 
domain = 0x23, 
            translation = 0x5565fffffffb <error: Cannot access memory at 
address 0x5565fffffffb>, 
            translation_length = 93892446493792, msgid = {appended = 
0x7ffeb262bb08 "", 
              ptr = 0x52fb0a5631f15a00 <error: Cannot access memory at address 
0x52fb0a5631f15a00>}}
          foundp = 0x0
          localename = <optimized out>
          domainname_len = <optimized out>
  #2  0x00007f327b44338c in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  No symbol table info available.
  #3  0x00007f327b3e95f9 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  No symbol table info available.
  #4  0x00007f327b40d315 in g_input_stream_read () from 
/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  No symbol table info available.
  #5  0x00007f327c1ae569 in ?? () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #6  0x00007f3278c51a15 in ?? () from /usr/lib/x86_64-linux-gnu/libyaml-0.so.2
  No symbol table info available.
  #7  0x00007f3278c51cde in yaml_parser_update_buffer () from 
/usr/lib/x86_64-linux-gnu/libyaml-0.so.2
  No symbol table info available.
  #8  0x00007f3278c56498 in yaml_parser_fetch_more_tokens () from 
/usr/lib/x86_64-linux-gnu/libyaml-0.so.2
  No symbol table info available.
  #9  0x00007f3278c5b32f in yaml_parser_parse () from 
/usr/lib/x86_64-linux-gnu/libyaml-0.so.2
  No symbol table info available.
  #10 0x00007f327c1ae39b in ?? () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #11 0x00007f327c1ae890 in as_yaml_from_file () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #12 0x00007f327c1a9231 in ?? () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #13 0x00007f327c1a9867 in ?? () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #14 0x00007f327c1a9ee1 in ?? () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #15 0x00007f327c1aa994 in as_store_load () from 
/usr/lib/x86_64-linux-gnu/libappstream-glib.so.8
  No symbol table info available.
  #16 0x00005565094a59c7 in main ()
  No symbol table info available.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/appstream-glib/+bug/1591868/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to