[Libosinfo] [PATCH] Fix error propagation in DB loader
Daniel P. Berrange
berrange at redhat.com
Fri Apr 28 14:04:20 UTC 2017
On Fri, Apr 28, 2017 at 05:57:57PM +0400, Roman Bogorodskiy wrote:
> Daniel P. Berrange wrote:
>
> > When failing to read the pci/usb ID files we failed to
> > propagate the reported error.
> >
> > We also had some dead code which would never be reached
> > due to earlier gotos.
> >
> > Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> > ---
> > osinfo/osinfo_loader.c | 9 ++-------
> > 1 file changed, 2 insertions(+), 7 deletions(-)
> >
> > diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
> > index 6c7c009..dca23f1 100644
> > --- a/osinfo/osinfo_loader.c
> > +++ b/osinfo/osinfo_loader.c
> > @@ -2127,9 +2127,6 @@ static void osinfo_loader_process_list(OsinfoLoader *loader,
> > tmp++;
> > }
> >
> > - if (lerr)
> > - goto cleanup;
> > -
> > /* Phase 2: load data from non-native locations, filtering based
> > * on overrides from native locations */
> > tmp = dirs;
> > @@ -2151,15 +2148,13 @@ static void osinfo_loader_process_list(OsinfoLoader *loader,
> > }
> >
> > if (lerr) {
> > - break;
> > + g_propagate_error(err, lerr);
> > + goto cleanup;
> > }
> >
> > tmp++;
> > }
> >
> > - if (lerr)
> > - goto cleanup;
> > -
> > /* Phase 3: load combined set of files from native locations */
> > g_hash_table_iter_init(&iter, allentries);
> > while (g_hash_table_iter_next(&iter, &key, &value)) {
>
> I gave it a test and it improves things, e.g.:
>
> $ ./tools/osinfo-query os
> Error loading OS data: Error opening file:
> $
>
> test-loader fails with that:
>
> test-loader.c:36:F:Core:test_basic:0: Error opening file: No such file or directory
>
> Maybe it will make sense to include the actual filename? Because from
> user perspective it's not quite obvious what file it's trying to open.
When I do it, it does include the file name !
$ ./tools/osinfo-query os
Error loading OS data: Error opening file /usr/share/hwdata/pci.ids: No such file or directory
libosinfo actually doesn't get involved in the error message here,
everything after "Error loading OS data" comes out of glib itself.
So I think the problem is your glib version isn't reporting good
errors.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the Libosinfo
mailing list