qemu coredumps on RELENG_7
Juergen Lock
nox at jelal.kn-bremen.de
Thu Mar 20 20:18:33 UTC 2008
In article <200803181152.m2IBq0Ih012824 at lurza.secnetix.de> you write:
>D Hill <d.hill at yournetplus.com> wrote:
> > Rick C. Petty wrote:
> > > Oliver Fromme wrote:
> > > > Kostik Belousov wrote:
> > > > >
> > > > > Definitely,
> > > > > kldload aio
> > > > > before running qemu.
> > > >
> > > > Thank you, that seems to solve the problem indeed.
> > > > Is that documented somewhere? It's not in the manpage.
> > > > I think it should be in the manpage ... would have
> > > > saved me quite some time.
> > >
Actually it is also documented in the pkg-message of the port(s), but
apparently nobody reads that... (OK I could patch a pointer to that
into the manpage, do other ports do that?)
> > > Nope. It should be, or at least qemu should fail to start or at least
> > > print a message instead of just randomly failing.
>
>Definitely.
>
> > > I ran into the same problem and only after spending hours trying to get it
> > > to work did I remember to kldload aio.
> >
> > I don't know if this applies. However, I found this in
> > /usr/ports/UPDATING:
> >
> > 20070206:
>
>It applies, but I think someone who installs qemu now
>isn't supposed to read UPDATING all the way back to
>February 2007. In fact, for fresh installs you should
>not have to read UPDATING _at_ _all_.
>
>Important information like this should be in the manual
>page, and -- as Rick pointed out -- the failure mode is
>pathetic. It should print a useful error message right
>at the start instead of randomly failing later.
Anyway, this was easier than I thought: (it didn't occur to me that
modfind(2) also finds modules that are statically linked into the kernel...)
Index: qemu/vl.c
@@ -8423,6 +8423,12 @@
nb_nics = 0;
/* default mac address of the first network interface */
+#ifdef __FreeBSD__
+ loadmodules(0, "aio", NULL);
+ if (modfind("aio") == -1)
+ fprintf(stderr, "warning: aio not (kld)loaded, may cause `Invalid system call' traps on disk IO\n");
+#endif
+
optind = 1;
for(;;) {
if (optind >= argc)
Would everybody be satisfied with this now? :)
Juergen
More information about the freebsd-emulation
mailing list