Skip to content

pkgconf hangs with ~ at EOF in .pc file #384

@thesamesam

Description

@thesamesam

I'm not sure if this is the same as #380, thought it better to file separately to avoid a mess over there.

Originally reported at https://bugs.gentoo.org/950707 where someone gave me --debug logs from pkg-config --variable=completionsdir bash-completion --debug hanging (note that we'd also had https://bugs.gentoo.org/950316 about CLucene's .pc file being invalid).

This hangs for me, from clucene (note the trailing ~):

prefix=/usr
exec_prefix=${prefix}/bin
libdir=${prefix}/lib64
includedir=${prefix}/include:${prefix}/include/CLucene/ext

Name: libclucene
Description: CLucene - a C++ search engine, ported from the popular Apache Lucene
Version: 2.3.3.4
Libs: -L${prefix}/lib64/ -lclucene-core -lclucene-shared
Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext
~
$ pkg-config --maximum-traverse-depth=1 --validate libclucene-core.pc --debug
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/dependency.c:115 [add_or_replace_dependency_node]: added dependency [libclucene-core.pc] to list @0x7fff3a1a9a90; flags=4
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/dependency.c:232 [pkgconf_dependency_ref]: libclucene-core.pc refcount@0x5a5056b77860: 1
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/queue.c:240 [pkgconf_queue_verify]: solving
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/pkg.c:1715 [pkgconf_pkg_traverse_main]: user:request: level 1, serial 1
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/pkg.c:1732 [pkgconf_pkg_traverse_main]: user:request: walking 'Requires' list
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/pkg.c:1459 [pkgconf_pkg_verify_dependency]: trying to verify dependency: libclucene-core.pc
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/pkg.c:847 [pkgconf_pkg_find]: looking for: libclucene-core.pc
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/pkg.c:854 [pkgconf_pkg_find]: libclucene-core.pc is a file
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:251 [pkgconf_tuple_add]: adding tuple to @0x5a5056b77ff0: pcfiledir => libclucene-core.pc (parsed? 1)
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:251 [pkgconf_tuple_add]: adding tuple to @0x5a5056b77ff0: prefix => /usr (parsed? 1)
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:251 [pkgconf_tuple_add]: adding tuple to @0x5a5056b77ff0: exec_prefix => /usr/bin (parsed? 1)
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:251 [pkgconf_tuple_add]: adding tuple to @0x5a5056b77ff0: libdir => /usr/lib64 (parsed? 1)
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:251 [pkgconf_tuple_add]: adding tuple to @0x5a5056b77ff0: includedir => /usr/include:/usr/include/CLucene/ext (parsed? 1)
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:740 [pkgconf_fragment_parse]: post-subst: [-L${prefix}/lib64/ -lclucene-core -lclucene-shared] -> [-L/usr/lib64/ -lclucene-core -lclucene-shared]
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:752 [pkgconf_fragment_parse]: processing -L/usr/lib64/
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:215 [pkgconf_fragment_add]: added fragment {L, '/usr/lib64/'} to list @0x5a5056b77f30
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:752 [pkgconf_fragment_parse]: processing -lclucene-core
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:215 [pkgconf_fragment_add]: added fragment {l, 'clucene-core'} to list @0x5a5056b77f30
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:752 [pkgconf_fragment_parse]: processing -lclucene-shared
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:215 [pkgconf_fragment_add]: added fragment {l, 'clucene-shared'} to list @0x5a5056b77f30
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/tuple.c:358 [pkgconf_tuple_parse]: lookup tuple prefix
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:740 [pkgconf_fragment_parse]: post-subst: [-I${prefix}/include -I${prefix}/include/CLucene/ext] -> [-I/usr/include -I/usr/include/CLucene/ext]
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:752 [pkgconf_fragment_parse]: processing -I/usr/include
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:215 [pkgconf_fragment_add]: added fragment {I, '/usr/include'} to list @0x5a5056b77f60
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:752 [pkgconf_fragment_parse]: processing -I/usr/include/CLucene/ext
/var/tmp/portage/dev-util/pkgconf-2.4.1/work/pkgconf-2.4.1/libpkgconf/fragment.c:215 [pkgconf_fragment_add]: added fragment {I, '/usr/include/CLucene/ext'} to list @0x5a5056b77f60
# stuck
0x000076f29fd69704 in pkgconf_parser_parse (f=f@entry=0x58c2e395ccf0, data=data@entry=0x58c2e395ced0, ops=ops@entry=0x76f29fd72960 <pkg_parser_funcs>,
    warnfunc=warnfunc@entry=0x76f29fd5b1b0 <pkg_warn_func>, filename=filename@entry=0x58c2e395c840 "libclucene-core.pc")
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/parser.c:44
44                      lineno++;
(gdb) bt
#0  0x000076f29fd69704 in pkgconf_parser_parse (f=f@entry=0x58c2e395ccf0, data=data@entry=0x58c2e395ced0, ops=ops@entry=0x76f29fd72960 <pkg_parser_funcs>,
    warnfunc=warnfunc@entry=0x76f29fd5b1b0 <pkg_warn_func>, filename=filename@entry=0x58c2e395c840 "libclucene-core.pc")
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/parser.c:44
#1  0x000076f29fd5fd8a in pkgconf_pkg_new_from_file (client=0x58c2df9e4880 <pkg_client>, filename=<optimized out>, f=0x58c2e395ccf0, flags=<optimized out>)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:543
#2  0x000076f29fd6028e in pkgconf_pkg_find (client=0x58c2df9e4880 <pkg_client>, name=0x58c2e395c8c0 "libclucene-core.pc")
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:856
#3  0x000076f29fd608cb in pkgconf_pkg_verify_dependency (client=0x58c2df9e4880 <pkg_client>, pkgdep=0x58c2e395c860, eflags=0x7ffe57646774)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:1467
#4  pkgconf_pkg_verify_dependency (client=0x58c2df9e4880 <pkg_client>, pkgdep=0x58c2e395c860, eflags=0x7ffe57646774)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:1452
#5  0x000076f29fd6167b in pkgconf_pkg_walk_list (client=client@entry=0x58c2df9e4880 <pkg_client>, parent=parent@entry=0x7ffe57646880, deplist=deplist@entry=0x7ffe57646940,
    func=func@entry=0x0, data=data@entry=0x0, depth=depth@entry=1, skip_flags=0) at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:1579
#6  0x000076f29fd610e6 in pkgconf_pkg_traverse_main (client=0x58c2df9e4880 <pkg_client>, root=<optimized out>, func=0x0, data=<optimized out>, maxdepth=1, skip_flags=0)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:1733
#7  0x000076f29fd67efd in pkgconf_pkg_traverse (client=0x58c2df9e4880 <pkg_client>, root=0x7ffe57646880, func=0x0, data=0x0, maxdepth=1, skip_flags=<optimized out>)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/pkg.c:1764
#8  pkgconf_queue_verify (client=client@entry=0x58c2df9e4880 <pkg_client>, world=world@entry=0x7ffe57646b50, list=list@entry=0x7ffe57646af0, maxdepth=1)
    at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/queue.c:241
#9  0x000076f29fd68632 in pkgconf_queue_solve (client=client@entry=0x58c2df9e4880 <pkg_client>, list=list@entry=0x7ffe57646af0, world=world@entry=0x7ffe57646b50,
    maxdepth=<optimized out>) at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/libpkgconf/queue.c:323
#10 0x000058c2df9dca39 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/dev-util/pkgconf-2.4.1/pkgconf-2.4.1/cli/main.c:1570

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions