SLIRP still not working for win32

Bug #935945 reported by Kenneth Salerno
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Stefan Weil

Bug Description

SLIRP has not worked since 0.14.1 (broken since the move to gthread/gio from the glib library which inherited -mms-bitfields on MinGW32 breaking bit padding on TCP/UDP packets). Patches attempting to reverse effects of GCC's -mms-bitfields do not seem to fix SLIRP.

Here is an example slirp debug log:

arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 84
icmp_input...
m = 5bd4f0b8
m_len = 84
icmp_type = 8
ip_output...
so = 0
m0 = 5bd4f0b8
if_output...
so = 0
ifm = 5bd4f0b8
if_start...
arp_table_search...
ip = 0x502000a
found hw addr = 52:54:00:12:34:56
m_free...
m = 5bd4f0b8
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 84
icmp_input...
m = 5bd4f0b8
m_len = 84
icmp_type = 8
ip_output...
so = 0
m0 = 5bd4f0b8
if_output...
so = 0
ifm = 5bd4f0b8
if_start...
arp_table_search...
ip = 0x502000a
found hw addr = 52:54:00:12:34:56
m_free...
m = 5bd4f0b8
arp_table_add...
ip = 0x502000a
hw addr = 52:54:00:12:34:56
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 55
udp_input...
m = 5bd4f0b8
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f0b8
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=8.8.8.8
m_free...
m = 0
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
m_get...
m = 5bd4f728
ip_input...
m = 5bd4f728
m_len = 55
udp_input...
m = 5bd4f728
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f728
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=8.8.8.8
m_free...
m = 5bd4f0b8
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
m_get...
m = 5bd4f0b8
ip_input...
m = 5bd4f0b8
m_len = 55
udp_input...
m = 5bd4f0b8
iphlen = 20
sosendto...
so = 5bd104a0
m = 5bd4f0b8
sendto()ing, addr.sin_port=53, addr.sin_addr.s_addr=8.8.8.8
m_free...
m = 5bd4f728
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
[repeated]

Revision history for this message
Kenneth Salerno (kennethsalerno) wrote :
Download full text (6.5 KiB)

Here is a slirp debug log from the latest development version as of 2012-02-19 (last git commit logged 2012-02-15):

tcp_listen...
 haddr = 100007f
 hport = 11555
 laddr = 502000a
 lport = 5632
 flags = 1000
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
arp_table_add...
 ip = 0x502000a
 hw addr = 52:54:00:12:34:56
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
tcp_slowtimo...
ip_slowtimo...
t...

Read more...

Revision history for this message
Roy Tam (roytam) wrote :

So we're revisiting ms-bitfields issue:
http://patchwork.ozlabs.org/patch/109989/

Revision history for this message
Kenneth Salerno (kennethsalerno) wrote :

Confirmed this effects all network communication, such as gdb TCP listen socket from guest.

Revision history for this message
Stefan Weil (ubuntu-weilnetz) wrote :

Please try latest QEMU from git://git.qemu.org/qemu.git.
Some slirp related fixes were added recently.

I don't see any negative effects caused by -mms-bitfields
in my tests.

Changed in qemu:
assignee: nobody → Stefan Weil (ubuntu-weilnetz)
Revision history for this message
Kenneth Salerno (kennethsalerno) wrote :

From the latest QEMU from git:

 haddr = 100007f
 hport = 11555
 laddr = 502000a
 lport = 5632
 flags = 1000
ip_slowtimo...
tcp_slowtimo...
if_start...
if_start...
if_start...
if_start...

[ if_start... repeats forever ]

command-line used:
            ./testing/qemu/i386-softmmu/qemu-system-i386 \
                        -L ./testing/qemu/pc-bios \
                        -m 1024 \
                        -rtc base=localtime \
                        -parallel none \
                        -netdev type=user,id=mynet0,hostfwd=tcp:127.0.0.1:9005-10.0.2.5:22 \
                        -device e1000,netdev=mynet0 \
                        -drive file=images/freebsd.img,index=0,media=disk,cache=unsafe \
                        -gdb tcp::1234

Revision history for this message
Kenneth Salerno (kennethsalerno) wrote :

SLIRP is now currently WORKING for win32 in qemu.org git master as of Apr 13 2012 10:20 Eastern. The last time I checked unsuccessfully with things still broken was earlier in the week, probably April 9th, I don't remember exactly, but the fix was definitely committed this week.

Thanks!!!

Revision history for this message
Paolo Bonzini (bonzini) wrote :

Yes, I forgot to update the bug. Thanks for testing! :)

Changed in qemu:
status: New → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.