vivier / qemu-m68k

Other
41 stars 7 forks source link

'apt-get update' segfaults with 03d386a on qemu-user #8

Closed glaubitz closed 7 years ago

glaubitz commented 8 years ago

Hi!

Updating to the latest revision 03d386a resulted in 'apt-get update' segfaulting when using qemu-user mode:

(sid-m68k-sbuild)root@z6:/# apt-get update Reading package lists... Done E: Method http has died unexpectedly! E: Sub-process http received a segmentation fault. (sid-m68k-sbuild)root@z6:/#

Reverting to an older version helps. Haven't bisected the code yet, however.

Adrian

glaubitz commented 8 years ago

This is resolved by reverting the following commits:

a56d4d73b557bdc0171b116886e210827e0ca3cb 8a9587cbd88fdc31cab4e8793f6b15014a3c83d2 211c7bc91d3f2aafbd1cc51f931fcb7e88437b93 5772073d88375164286614e05242a6a0c43bceb6

which are all the commits related to adding netlink support. Although this is already known, I just document it here for others that might run into the same bug.

Adrian

jrtc27 commented 8 years ago

As of this comment, the relevant commits to revert are now:

65e65b21bb4fdbacf9bef67c6dd9685a3248fb68 7c9a671dbc427d6109ba54bdf106c9ff4ebb27db f0a0acff013df427c9bae39051d9ada54af26b61 b72a43c53cdcfb84270ffc8f5c759c47d6410ef5

vivier commented 8 years ago

As I rebase this branch regularly, the commit IDs change, so the title of these commits are:

linux-user: add partial SOL_NETLINK level in setsockopt()/getsockopt() linux-user: add netlink audit linux-user: support netlink protocol NETLINK_KOBJECT_UEVENT linux-user: add rtnetlink(7) support

I plan to do a 680x0-v2.6.0 which should never be rebased (based on qemu-2.6.0). I will remove the netlink stuff from this branch.

vivier commented 8 years ago

I've found the bugs.

I've a fix for SEGFAULT: linux-user: fd_trans_host_to_target_data() must process only received data https://patchwork.ozlabs.org/patch/636628/ linux-user: don't swap NLMSG_DATA() fields https://patchwork.ozlabs.org/patch/636626/

And I know why "apt-get update" hangs: we byte-swap the data in the guest memory and this corrupts the sequence number (libc/check_pf.c checks the sequence number of the sendto() with the ones of the recvmsg() and the one of the sendto() is corrupted by our byte-swapping).

vivier commented 8 years ago

Should be fixed in 680x0-master-dev now. Please check.

glaubitz commented 8 years ago

I think it's safe to close this one. I haven't seen any issues with apt-get update for a while now.