[Bug 7767] Zero G Software 'InstallAnywhere' installers crash or silently exit (Rosetta Stone, Reading Counts, World Religions, Parashara's Light Professional 7.0.1)
WineHQ Bugzilla
wine-bugs at winehq.org
Mon Nov 30 07:46:01 CST 2020
https://bugs.winehq.org/show_bug.cgi?id=7767
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|-unknown |oledb32
--- Comment #13 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
revisiting, still present.
After having a deeper look I found the problem ... took almost 14 years :|
It's basically a reincarnation of bug 7881 ("JRE 1.3.1: RuntimeException in
sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl(Native Method)") which was not
properly fixed / validated.
The problem is not easy to spot with the installers because the root cause was
not visible and the late error was just a manifestation of a general problem
much earlier.
After first failure one can run the inner installer and pass additional
arguments (class loader/jni -> more verbosity):
--- snip ---
$ wine "c:\temp\Windows\resource\jre\bin\javaw.exe" \
-Xms16777216 -Xmx50331648 -verbose:class -verbose:jni \
-classpath
"c:\temp\InstallerData\IAClasses.zip;c:\temp\Windows\resource\jdglue.zip;c:\temp\InstallerData\Execute.zip;c:\temp\Windows\InstallerData\Execute.zip;c:\temp\InstallerData\Resource1.zip;c:\temp\Windows\InstallerData\Resource1.zip;c:\temp\InstallerData;c:\temp\Windows\InstallerData;"
\
com.zerog.lax.LAX "c:/temp/Windows/Setup.lax" \
"C:/users/$USER/Temp/lax29d1.tmp"
...
[Loaded sun.java2d.SunGraphicsEnvironment from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.awt.Win32GraphicsEnvironment from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method sun.awt.Win32GraphicsEnvironment.initDisplay ...
JNI]
[Loaded java.util.SortedMap from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.TreeMap from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.java2d.SunGraphicsEnvironment$1 from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.awt.font.NativeFontWrapper from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method sun.awt.font.NativeFontWrapper.getType1FontVar
... JNI]
[Dynamic-linking native method sun.awt.font.NativeFontWrapper.getFontPath ...
JNI]
[Loaded sun.awt.FontProperties from c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method java.io.WinNTFileSystem.checkAccess ... JNI]
[Loaded java.util.TreeMap$Entry from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.Hashtable$KeySet from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.Collections$SynchronizedCollection from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.Collections$SynchronizedSet from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.io.FilenameFilter from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.java2d.SunGraphicsEnvironment$TTFilter from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.TreeMap$1 from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.util.TreeMap$Iterator from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method
sun.awt.font.NativeFontWrapper.registerCompositeFont ... JNI]
[Dynamic-linking native method sun.awt.Win32GraphicsEnvironment.getNumScreens
... JNI]
[Loaded java.awt.GraphicsDevice from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.awt.Win32GraphicsDevice from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method sun.awt.Win32GraphicsDevice.initIDs ... JNI]
[Dynamic-linking native method
sun.awt.Win32GraphicsEnvironment.getDefaultScreen ... JNI]
[Dynamic-linking native method sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl
... JNI]
[Loaded ZeroGae]
[Loaded ZeroGah]
[Loaded ZeroGny]
[Loaded ZeroGh]
[Loaded ZeroGag]
[Loaded java.lang.UnsatisfiedLinkError from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded com.zerog.ia.platform.SysJD]
[Loaded java.util.Observer from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded ZeroGde]
...
[Loaded java.awt.Cursor from c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method java.awt.Cursor.initIDs ... JNI]
[Loaded java.awt.geom.Point2D from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.awt.Point from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.awt.GlobalCursorManager from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.awt.AWTEvent from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.awt.ActiveEvent from c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded java.awt.event.InvocationEvent from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Loaded sun.awt.GlobalCursorManager$CursorEvent from
c:\temp\Windows\resource\jre\lib\rt.jar]
[Dynamic-linking native method java.awt.AWTEvent.initIDs ... JNI]
[Dynamic-linking native method java.lang.Throwable.printStackTrace0 ... JNI]
[Loaded com.zerog.ia.installer.IAStatus]
[Loaded ZeroGdk]
[Loaded com.zerog.ia.installer.IAStatusLog]
[Dynamic-linking native method java.io.FileOutputStream.writeBytes ... JNI]
Invocation of this Java Application has caused an InvocationTargetException.
This application will now exit. (LAX)
Stack Trace:
java.lang.NoClassDefFoundError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.awt.Toolkit$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Unknown Source)
at sun.awt.GlobalCursorManager$CursorEvent.<init>(Unknown Source)
at sun.awt.GlobalCursorManager.<clinit>(Unknown Source)
at java.awt.Cursor.initIDs(Native Method)
at java.awt.Cursor.<clinit>(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at com.zerog.ia.installer.LifeCycleManager.f(DashoA8113)
at com.zerog.ia.installer.LifeCycleManager.g(DashoA8113)
at com.zerog.ia.installer.LifeCycleManager.a(DashoA8113)
at com.zerog.ia.installer.Main.main(DashoA8113)
at java.lang.reflect.Method.invoke(Native Method)
at com.zerog.lax.LAX.launch(DashoA8113)
at com.zerog.lax.LAX.main(DashoA8113)
[Loaded ZeroGa0]
[Loaded ZeroGap]
...
This Application has Unexpectedly Quit: Invocation of this Java Application has
caused an InvocationTargetException. This application will now exit. (LAX)
--- snip ---
I've debugged it (native, no jdb) and at the point before of the java exception
the class loader couldn't load/resolve 'sun.awt.windows.WToolkit' class for
unknown reasons even though it had been previously loaded.
Suspecting it has something to do with the graphics subsystem I wrote a small
java app and compiled it using a matching JDK.
http://download.oracle.com/otn/java/j2sdk/1.3.0_03/j2sdk-1_3_0_03-win.exe
Stable link via Internet Archive:
https://web.archive.org/web/20201130115841/https://isis-data.science.uva.nl/koelma/horus/third/java/j2sdk-1_3_0_03-win.exe
--- snip ---
// compile: wine "c:\\jdk1.3.0_03\\bin\\javac.exe" -g GraphicsTest.java
// run: wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest
import java.awt.*;
public class GraphicsTest {
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
System.err.println("Getting config for " + gs[j].getIDstring());
long startTime = System.currentTimeMillis() ;
GraphicsConfiguration[] gc = gs[j].getConfigurations();
System.err.println("Finished in " + (System.currentTimeMillis() -
startTime) + " milliseconds");
}
}
}
--- snip ---
Voila:
--- snip ---
$ wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest
Getting config for \Display0
Exception in thread "main" java.lang.RuntimeException:
Unable to create a suitable default GraphicsConfiguration. Try changing your
Display Settings.
at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method)
at
sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73)
at GraphicsTest.main(GraphicsTest.java:17)
--- snip ---
A surprise indeed as this should have been fixed a long time ago.
Looking at sources (might not fully match the old Sun JRE but:
https://github.com/srisatish/openjdk/blob/6ffc2d129dbe05c358663364e705393c2d7322a1/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp#L914
--- snip ---
...
/**
* End of static deviceIndex-based methods
*/
const DWORD REQUIRED_FLAGS = ( //Flags which must be set in
PFD_SUPPORT_GDI | //in the PixelFormatDescriptor.
PFD_DRAW_TO_WINDOW); //Used to choose the default config
//and to check formats in
//isPixFmtSupported()
...
/*
* Class: sun_awt_Win32GraphicsDevice
* Method: isPixFmtSupported
* Signature: (I)Z
*/
JNIEXPORT jboolean JNICALL Java_sun_awt_Win32GraphicsDevice_isPixFmtSupported
(JNIEnv* env, jobject theThis, jint pixFmtID, jint screen) {
TRY;
jboolean suppColor = JNI_TRUE;
HDC hDC = AwtWin32GraphicsDevice::GetDCFromScreen(screen);
if (pixFmtID == 0) {
return true;
}
PIXELFORMATDESCRIPTOR pfd;
int max = ::DescribePixelFormat(hDC, (int)pixFmtID,
sizeof(PIXELFORMATDESCRIPTOR), &pfd);
DASSERT(max);
//Check for supported ColorModel
if ((pfd.cColorBits < 8) ||
((pfd.cColorBits == 8) && (pfd.iPixelType != PFD_TYPE_COLORINDEX))) {
//Note: this still allows for PixelFormats with > 8 color bits
//which use COLORINDEX instead of RGB. This seems to work fine,
//although issues may crop up involving PFD_NEED_PALETTE, which
//is not currently taken into account.
//If changes are made, they should also be reflected in
//getDefaultPixID.
suppColor = JNI_FALSE;
}
if (hDC != NULL) {
VERIFY(::DeleteDC(hDC));
hDC = NULL;
}
return (((pfd.dwFlags & REQUIRED_FLAGS) == REQUIRED_FLAGS) && suppColor) ?
JNI_TRUE : JNI_FALSE;
CATCH_BAD_ALLOC_RET(FALSE);
}
/*
* Class: sun_awt_Win32GraphicsDevice
* Method: getDefaultPixIDImpl
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_sun_awt_Win32GraphicsDevice_getDefaultPixIDImpl
(JNIEnv* env, jobject theThis, jint screen) {
TRY;
int pixFmtID = 0;
HDC hDC = AwtWin32GraphicsDevice::GetDCFromScreen(screen);
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1, //version
REQUIRED_FLAGS, //flags
0, //iPixelType
0, //cColorBits
0,0,0,0,0,0,0,0, //cRedBits, cRedShift, green, blue, alpha
0,0,0,0,0, //cAccumBits, cAccumRedBits, green, blue, alpha
0,0,0,0,0,0,0,0 //etc.
};
//If 8-bit mode, must use Indexed mode
if (8 == ::GetDeviceCaps(hDC, BITSPIXEL)) {
pfd.iPixelType = PFD_TYPE_COLORINDEX;
}
pixFmtID = ::ChoosePixelFormat(hDC, &pfd);
if (pixFmtID == 0) {
//Return 0 if GDI call fails.
if (hDC != NULL) {
VERIFY(::DeleteDC(hDC));
hDC = NULL;
}
return pixFmtID;
}
if (JNI_FALSE == Java_sun_awt_Win32GraphicsDevice_isPixFmtSupported(
env, theThis, pixFmtID, screen)) {
/* Can't find a suitable pixel format ID. Fall back on 0. */
pixFmtID = 0;
}
VERIFY(::DeleteDC(hDC));
hDC = NULL;
return (jint)pixFmtID;
CATCH_BAD_ALLOC_RET(0);
}
...
--- snip ---
nvidia:
--- snip ---
$ WINEDEBUG=+seh,+x11drv,+wgl,+winediag wine "c:\\jdk1.3.0_03\\bin\\java.exe"
GraphicsTest >>log_nvidia.txt 2>&1
...
0338:trace:wgl:init_pixel_formats Found onscreen format FBCONFIG_ID 0x14b
corresponding to iPixelFormat 5 at GLX index 4
0338:trace:wgl:init_pixel_formats Found bitmap capable format FBCONFIG_ID 0x14b
corresponding to iPixelFormat 6 at GLX index 4
...
0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 37 type 0
color 32 8,8,8,8 accum 64 depth 24 stencil 8 aux 4 PFD_DOUBLEBUFFER
PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL
0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,5,40,0x31f988)
0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=5
...
0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0
color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW
PFD_SUPPORT_OPENGL
0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,6,40,0x31f988)
0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=6
0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 124 type 0
color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW
PFD_DRAW_TO_BITMAP PFD_GENERIC_FORMAT PFD_SUPPORT_GDI PFD_SUPPORT_OPENGL
0338:trace:wgl:wglChoosePixelFormat PFD_DRAW_TO_BITMAP mismatch for
iPixelFormat=6
...
0338:trace:wgl:wglChoosePixelFormat returning 5
0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10045,5,40,0x31f99c)
0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=5
0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0
color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW
PFD_SUPPORT_OPENGL
java.lang.RuntimeException:
Unable to create a suitable default GraphicsConfiguration. Try changing your
Display Settings.
at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method)
at
sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73)
at GraphicsTest.main(GraphicsTest.java:13)
Exception in thread "main"
--- snip ---
Intel/Mesa:
--- snip ---
$ WINEDEBUG=+seh,+x11drv,+wgl,+winediag wine "c:\\jdk1.3.0_03\\bin\\java.exe"
GraphicsTest >>log_mesa.txt 2>&1
...
035c:trace:wgl:init_pixel_formats Found onscreen format FBCONFIG_ID 0x264
corresponding to iPixelFormat 2 at GLX index 5
...
035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 37 type 0
color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DOUBLEBUFFER
PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL
035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,2,40,0x31f988)
035c:trace:wgl:get_pixel_format Returning fmt_id=0x264 for iPixelFormat=2
...
035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 124 type 0
color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DRAW_TO_WINDOW
PFD_DRAW_TO_BITMAP PFD_GENERIC_FORMAT PFD_SUPPORT_GDI PFD_SUPPORT_OPENGL
035c:trace:wgl:wglChoosePixelFormat PFD_DRAW_TO_BITMAP mismatch for
iPixelFormat=3
035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,4,40,0x31f988)
035c:trace:wgl:get_pixel_format Returning fmt_id=0x265 for iPixelFormat=4
...
035c:trace:wgl:wglChoosePixelFormat returning 2
035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10045,2,40,0x31f99c)
035c:trace:wgl:get_pixel_format Returning fmt_id=0x264 for iPixelFormat=2
035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0
color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DRAW_TO_WINDOW
PFD_SUPPORT_OPENGL
java.lang.RuntimeException:
Unable to create a suitable default GraphicsConfiguration. Try changing your
Display Settings.
at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method)
at
sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73)
at GraphicsTest.main(GraphicsTest.java:13)
Exception in thread "main"
--- snip ---
https://source.winehq.org/git/wine.git/blob/cbca9f847f60773b4e7e5408f6a079f4896c5c1e:/include/wingdi.h#l90
--- snip ---
...
90 #define PFD_DOUBLEBUFFER 0x00000001
91 #define PFD_STEREO 0x00000002
92 #define PFD_DRAW_TO_WINDOW 0x00000004
93 #define PFD_DRAW_TO_BITMAP 0x00000008
94 #define PFD_SUPPORT_GDI 0x00000010
95 #define PFD_SUPPORT_OPENGL 0x00000020
96 #define PFD_GENERIC_FORMAT 0x00000040
...
--- snip ---
To recap from above JDK snippets:
--- snip ---
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
1, //version
REQUIRED_FLAGS, //flags
0, //iPixelType
0, //cColorBits
0,0,0,0,0,0,0,0, //cRedBits, cRedShift, green, blue, alpha
0,0,0,0,0, //cAccumBits, cAccumRedBits, green, blue, alpha
0,0,0,0,0,0,0,0 //etc.
};
--- snip --
REQUIRED_FLAGS = PFD_SUPPORT_GDI (16) | PFD_DRAW_TO_WINDOW (4) = 20 = 0x14
https://source.winehq.org/git/wine.git/blob/cbca9f847f60773b4e7e5408f6a079f4896c5c1e:/dlls/opengl32/wgl.c#l448
--- snip ---
448 /***********************************************************************
449 * wglChoosePixelFormat (OPENGL32.@)
450 */
451 INT WINAPI wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR*
ppfd)
452 {
453 PIXELFORMATDESCRIPTOR format, best;
454 int i, count, best_format;
455 int bestDBuffer = -1, bestStereo = -1;
456
457 TRACE_(wgl)( "%p %p: size %u version %u flags %u type %u color %u
%u,%u,%u,%u "
458 "accum %u depth %u stencil %u aux %u\n",
459 hdc, ppfd, ppfd->nSize, ppfd->nVersion, ppfd->dwFlags,
ppfd->iPixelType,
460 ppfd->cColorBits, ppfd->cRedBits, ppfd->cGreenBits,
ppfd->cBlueBits, ppfd->cAlphaBits,
461 ppfd->cAccumBits, ppfd->cDepthBits, ppfd->cStencilBits,
ppfd->cAuxBuffers );
462
463 count = wglDescribePixelFormat( hdc, 0, 0, NULL );
464 if (!count) return 0;
465
466 best_format = 0;
467 best.dwFlags = 0;
468 best.cAlphaBits = -1;
469 best.cColorBits = -1;
470 best.cDepthBits = -1;
471 best.cStencilBits = -1;
472 best.cAuxBuffers = -1;
473
474 for (i = 1; i <= count; i++)
475 {
476 if (!wglDescribePixelFormat( hdc, i, sizeof(format), &format ))
continue;
477
478 if ((ppfd->iPixelType == PFD_TYPE_COLORINDEX) !=
(format.iPixelType == PFD_TYPE_COLORINDEX))
479 {
480 TRACE( "pixel type mismatch for iPixelFormat=%d\n", i );
481 continue;
482 }
483
484 /* only use bitmap capable for formats for bitmap rendering */
485 if( (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) != (format.dwFlags &
PFD_DRAW_TO_BITMAP))
486 {
487 TRACE( "PFD_DRAW_TO_BITMAP mismatch for iPixelFormat=%d\n", i
);
488 continue;
489 }
...
590 if (ppfd->cAuxBuffers)
591 {
592 if (((ppfd->cAuxBuffers > best.cAuxBuffers) &&
(format.cAuxBuffers > best.cAuxBuffers)) ||
593 ((format.cAuxBuffers >= ppfd->cAuxBuffers) &&
(format.cAuxBuffers < best.cAuxBuffers)))
594 goto found;
595
596 if (best.cAuxBuffers != format.cAuxBuffers)
597 {
598 TRACE( "aux mismatch for iPixelFormat=%d\n", i );
599 continue;
600 }
601 }
602 continue;
603
604 found:
605 best_format = i;
606 best = format;
607 bestDBuffer = format.dwFlags & PFD_DOUBLEBUFFER;
608 bestStereo = format.dwFlags & PFD_STEREO;
609 }
610
611 TRACE( "returning %u\n", best_format );
612 return best_format;
613 }
--- snip ---
I think if 'PFD_SUPPORT_GDI' flag is passed to 'wglChoosePixelFormat' and the
available pixelformat doesn't support 'PFD_SUPPORT_GDI' it should skip the
format as candidate (no match) -> resulting in Java pixFmtID == 0 case (uses
fallback).
I've tested this and it made the installer(s) work.
I'm not an expert on this topic though, maybe one Wine x11/opengl dev has an
idea what's the correct way.
This will fix the startup of various installers using Java/AWT.
$ wine --version
wine-5.22
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list