This happens with version 4.1.3 on Solaris 10.

[partha@walle ~]$vncviewer -Log=*:stdout:100 -FullColour geometry=1680x1050+0+0 :2

VNC Viewer Free Edition 4.1.3 for X - built Dec  3 2008 23:03:17
Copyright (C) 2002-2008 RealVNC Ltd.
See http://www.realvnc.com for information on VNC.

Mon Sep 12 19:27:49 2011
 Config:      set FullColour(Bool) to 1
 Config:      set geometry(String) to 1680x1050+0+0
 CConn:       connected to host localhost port 5902
 CConnection: reading protocol version
 CConnection: Server supports RFB protocol version 3.8
 CConnection: Using RFB protocol version 3.8
 CConnection: processing security types message
 CConnection: Server offers security type VncAuth(2)
 CConnection: Choosing security type VncAuth(2)
 CConnection: processing security message

Mon Sep 12 19:27:51 2011
 CConnection: processing security result message
 CConnection: processing security result message
 CConnection: Authentication success!
 CConnection: reading server initialisation
 CConnection: initialisation done
 TXImage:     Using shared memory XImage
 TXImage:     Using default colormap and visual, TrueColor, depth 24.
 CConn:       Using pixel format depth 24 (32bpp) little-endian rgb888
 CConn:       Using ZRLE encoding
 DesktopWindow: no selection (1)
 DesktopWindow: no selection (271)
 PixelBuffer: reallocating managed buffer (16x16)
 PixelBuffer: reallocating managed buffer (16x16)
 PixelBuffer: reallocating managed buffer (16x16)
 PixelBuffer: reallocating managed buffer (16x16)
 DesktopWindow: no selection (1)
 DesktopWindow: no selection (271)
 DesktopWindow: cut buffer time is 0, later 0

Mon Sep 12 19:28:19 2011
 DesktopWindow: no selection (1)
 DesktopWindow: no selection (271)
 DesktopWindow: cut buffer time is 0, later 0
Pure virtual function called
Abort (core dumped)

[partha@walle /local/cores]$pstack vncviewer___pid16113_i86pc_walle | /local/CBE/SunStudio/SS12/bin/c++filt

core 'vncviewer___pid16113_i86pc_walle' of 16113: vncviewer -Log=*:stdout:100 -FullColour geometry=1680x1050+0+0 :1
 fef2b485 _lwp_kill (1, 6) + 15
 feed26b7 raise    (6) + 1f
feeb1e1d abort (80c5528, 8068b18, 8044d10, 80bb000, 8044d10, 80887a0) + cd
 fecd6884 void __Crun::pure_error() (80c5528, 64, 80a573c, 8043d10) + 2c
080887a0 void rfb::Logger::write(int,const char*,const char*,void*) (80c5528, 64, 80a573c, 80a5984, 8044d44) + 4c 08077d44 void rfb::LogWriter::debug(const char*,...) (80c3e28, 80a5984) + 34
 0807a590 void TXImage::destroyXImage() (843dca0) + 38
 08079d23 TXImage::~TXImage() (843dca0) + 3b
 0807abcd __SLIP.DELETER__D (843dca0, 1) + 1d
 0807ae80 TXImageCleanup::~TXImageCleanup #Nvariant 1() (80c3e98) + 40
0807aa4b __SLIP.FINAL__B (80c3f8c, 8044f40, fef9e000, fefa3ec0, 8044e84, feea4de2) + 1f
 feeb2569 _exithandle (80bb000, 806b636, 1, 80bb000, 8044f24, 8044f24) + 4e
 feea4de2 exit     (80451e8, 8432f70) + 12
 0807da1f void TXWindow::handleXEvent(_XEvent*) (8432f70, 8044f40) + a3
 0807cb0c void TXWindow::handleXEvents(_XDisplay*) (84248f0) + a8
 0806b76f void CConn::blockCallback() (80451e8) + 3b
080a2c3b int rdr::FdInStream::readWithTimeoutOrCallback(void*,int,bool) (8433e28, 8433e68, 2000, 1) + 1f7 080a2a02 int rdr::FdInStream::overrun(int,int,bool) (8433e28, 1, 1, 1) + d2
 0807885d main     (5, 8047220, 8047238) + 4ed
 08068ba2 ???????? (5, 804736c, 8047376, 8047388, 8047394, 80473ab)


This is due to the static order initialization/destruction fiasco problem. I've attached a simple fix, which should fix this problem. Can someone review the changes ?

--
Thanks,
Partha
diff -r 622f45d3847e common/rfb/Logger_stdio.cxx
--- a/common/rfb/Logger_stdio.cxx       Thu Sep 22 21:03:27 2011 +0530
+++ b/common/rfb/Logger_stdio.cxx       Thu Sep 22 21:04:59 2011 +0530
@@ -22,11 +22,11 @@
 
 using namespace rfb;
 
-static Logger_StdIO logStdErr("stderr", stderr);
-static Logger_StdIO logStdOut("stdout", stdout);
+bool rfb::initStdIOLoggers() {
+  static Logger_StdIO *logStdErr = new Logger_StdIO("stderr", stderr);
+  static Logger_StdIO *logStdOut = new Logger_StdIO("stdout", stdout);
 
-bool rfb::initStdIOLoggers() {
-  logStdErr.registerLogger();
-  logStdOut.registerLogger();
+  logStdErr->registerLogger();
+  logStdOut->registerLogger();
   return true;
 }
_______________________________________________
VNC-List mailing list
VNC-List@realvnc.com
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list

Reply via email to