This is the mail archive of the cygwin-xfree mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Cygwin/X crashes when combined with ssh/nx tunneling and -multiwindow


On 15/06/2013 13:06, Matt D. wrote:
> "Caught signal 11 (Segmentation fault). Server aborting"
> 
> So far I've only been able to duplicate this when tunneling Eclipse. I
> tried writing a simple java program that creates a JFrame window but could
> not replicate the crash with anything smaller (sorry!). The problem exists
> in the two versions I tried: Eclipse 3.6 and 4.2.

I'm afraid your diagnosis is a bit speculative.

>From the backtrace, it looks like the crash is occurring due to a failure when
converting the X11 icon to a Windows icon, and then not checking properly for
that failure.

I've applied a fix to address the immediate problem of not checking for the
failure, and I've uploaded a snapshot at [1]. Perhaps you could try that and
see if it fixes the issue for you?  If it does, I would also be interested to
know how the icon for the window which was causing this issue appears.

[1] ftp://cygwin.com/pub/cygwinx/XWin.20130615-git-9a3cc6b8d6f94f74.exe.bz2

> Although the error message pops up, Cygwin/X doesn't actually terminate
> until the error window that reports the segfault is closed. X continues to
> work if I ignore it, however all of the newly created windows do not have
> any titlebars or frame borders.

This is because the crash is occurring in the window manager thread, not the
server thread.

> This problem does NOT occur when running with either a root window or with the '-rootless' option.
> 
> I've attached the XWin backtrace. 

Thank you, this was very useful.

> #27 0x0042c0fd in NetWMToWinIconAlpha (icon=0xff8d0030)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/wmutil/icon_convert.c:264
>         hdc = <optimized out>
>         ii = {fIcon = 1, xHotspot = 0, yHotspot = 0, hbmMask = 0x0, 
>           hbmColor = 0x0}
>         bmh = {bV4Size = 108, bV4Width = -1, bV4Height = 1, bV4Planes = 1, 
>           bV4BitCount = 32, bV4V4Compression = 3, bV4SizeImage = 0, 
>           bV4XPelsPerMeter = 0, bV4YPelsPerMeter = 0, bV4ClrUsed = 0, 
>           bV4ClrImportant = 0, bV4RedMask = 16711680, bV4GreenMask = 65280, 
>           bV4BlueMask = 255, bV4AlphaMask = 4278190080, bV4CSType = 0, 
>           bV4Endpoints = {ciexyzRed = {ciexyzX = 0, ciexyzY = 0, 
>               ciexyzZ = 0}, ciexyzGreen = {ciexyzX = 0, ciexyzY = 0, 
>               ciexyzZ = 0}, ciexyzBlue = {ciexyzX = 0, ciexyzY = 0, 
>               ciexyzZ = 0}}, bV4GammaRed = 0, bV4GammaGreen = 0, 
>           bV4GammaBlue = 0}
>         width = <optimized out>
>         height = 0
>         pixels = 0xff8d0038
>         result = <optimized out>
>         DIB_pixels = 0x0

Hmm... this seems to indicate that icon was of size -1x-1, which doesn't seem
right...

> #28 NetWMToWinIcon (bpp=<optimized out>, icon=0xff8d0030)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/wmutil/icon_convert.c:358
>         hasIconAlphaChannel = true
>         versionChecked = true
> #29 0x0042c687 in winXIconToHICON (conn=0x802d0cf8, id=10485914, iconSize=32)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/wmutil/icon_convert.c:438
>         mask = <optimized out>
>         image = 0x0
>         imageMask = <optimized out>
>         dst = <optimized out>
>         src = <optimized out>
>         planes = 1
>         bpp = 32
>         i = <optimized out>
>         biggest_size = <optimized out>
>         hDC = <optimized out>
>         ii = {fIcon = -1812266357, xHotspot = 2150436088, 
>           yHotspot = 10485914, hbmMask = 0x1a19be, hbmColor = 0x20}
>         hints = {flags = 11, input = 2150436088, initial_state = -2176016, 
>           icon_pixmap = 1975673360, icon_window = 1710526, icon_x = 1024, 
>           icon_y = -2175960, icon_mask = 1975680452, 
>           window_group = 1975680403}
>         hIcon = 0x0
>         biggest_icon = <optimized out>
>         _XA_NET_WM_ICON = 235
>         generation = 1
>         icon = <optimized out>
>         icon_data = <optimized out>
>         size = <optimized out>
>         cookie = <optimized out>
>         reply = 0xff890008
> #30 0x004085ff in winUpdateIcon (hWnd=0x1a19be, pDisplay=0x8028efd8, 
>     id=10485914, hIconNew=0x0)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/winmultiwindowicons.c:71
>         conn = 0x802d0cf8
>         hIcon = <optimized out>
>         hIconSmall = 0x0
>         hIconOld = <optimized out>
> #31 0x0041d987 in UpdateIcon (iWindow=10485914, pWMInfo=<optimized out>)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/winmultiwindowwm.c:666
>         hWnd = 0x1a19be
>         hIconNew = <optimized out>
>         attr = {x = 2014, y = 389, width = 452, height = 302, 
>           border_width = 0, depth = 24, visual = 0x802dc4e0, root = 534, 
>           class = 1, bit_gravity = 1, win_gravity = 1, backing_store = 0, 
>           backing_planes = 4294967295, backing_pixel = 0, save_under = 0, 
>           colormap = 10485886, map_installed = 0, map_state = 2, 
>           all_event_masks = 6537343, your_event_mask = 0, 
>           do_not_propagate_mask = 0, override_redirect = 0, 
>           screen = 0x802dc430}
> #32 0x0041f3b9 in winMultiWindowWMProc (pArg=0x80046368)
>     at /usr/src/debug/xorg-server-1.14.1-1/hw/xwin/winmultiwindowwm.c:928
>         pNode = 0x8031fab0
>         __cleanup_handler = {function = 0x41d260 <winMultiWindowThreadExit>, 
>           arg = 0x0, next = 0x0}
>         pProcArg = 0x80046368
>         pWMInfo = 0x80046378
> #33 0x610ffe1a in pthread::thread_init_wrapper(void*)@4 (arg=0x80040090)
>     at /usr/src/debug/cygwin-1.7.20-1/winsup/cygwin/thread.cc:1947
>         thread = 0x80040090
>         __PRETTY_FUNCTION__ = "static DWORD pthread::thread_init_wrapper(void*)"
>         ret = <optimized out>
> #34 0x6108974c in thread_wrapper (arg=0x0)
>     at /usr/src/debug/cygwin-1.7.20-1/winsup/cygwin/miscfuncs.cc:600
>         dealloc_addr = <optimized out>
>         count = <optimized out>
>         wrapper_arg = {func = 0x0, arg = 0x0, stackaddr = 0x0, 
>           stackbase = 0x0, stacklimit = 0x0}
>         old_start = 0x610d9285 <_sigbe>


-- 
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]