[mythtv-users] Re: mythbrowser 0.18

Khanh Tran khanh at slc.edu
Tue May 3 12:01:24 UTC 2005


It doesn't like the new line you suggest.  Compile errors are below.  It
does like Doug Scoular's suggestion to put it back to the way it was in
0.17.

mythtv at tv:~/download/mythtv.18/mythplugins-0.18/mythbrowser> make
cd mythbrowser && make -f Makefile
make[1]: Entering directory
`/home/mythtv/download/mythtv.18/mythplugins-0.18/mythbrowser/mythbrowse
r'
g++ -c -pipe -Wall -W -O3 -march=pentiumpro -fomit-frame-pointer
-D_REENTRANT  -D_GNU_SOURCE -DPREFIX=\"/usr/local\" -DHAVE_MMX
-DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED
-I/usr/local/lib/qt3/mkspecs/default -I. -I/usr/local/include
-I/usr/include/kde -I/opt/kde3/include -I/usr/local/lib/qt3/include -o
main.o main.cpp
main.cpp: In function `int main(int, char**)':
main.cpp:65: error: no matching function for call to
`KCmdLineArgs::init(int&, 
   char**&, const char[12], const char[12], char[53], const char*&,
bool)'
/opt/kde3/include/kcmdlineargs.h:213: error: candidates are: static void

   KCmdLineArgs::init(int, char**, const char*, const char*, const
char*, bool)
/opt/kde3/include/kcmdlineargs.h:226: error:                 static void

   KCmdLineArgs::init(int, char**, const KAboutData*, bool)
/opt/kde3/include/kcmdlineargs.h:238: error:                 static void

   KCmdLineArgs::init(const KAboutData*)
make[1]: *** [main.o] Error 1
make[1]: Leaving directory
`/home/mythtv/download/mythtv.18/mythplugins-0.18/mythbrowser/mythbrowse
r'
make: *** [sub-mythbrowser] Error 2

 

-----Original Message-----
From: mythtv-users-bounces at mythtv.org
[mailto:mythtv-users-bounces at mythtv.org] On Behalf Of Paul
Sent: Tuesday, May 03, 2005 6:21 AM
To: mythtv-users at mythtv.org
Subject: [mythtv-users] Re: mythbrowser 0.18

>Hi All,
>I've been trying to debug the mythbrowser 0.18 segmentation violation. 
>I've been using gdb, here is where the problem
>starts:

>Breakpoint 2, main (argc=2, argv=0xbffff684) at main.cpp:78
>78 KApplication a(argc,argv);
>(gdb) s

>Program received signal SIGSEGV, Segmentation fault.
>0x41161569 in KCmdLineArgs::count () from 
>/usr/kde/3.2/lib/libkdecore.so.4

>KApplication is allocating "a" and thus calling it's constructor. The 
>constructor seems unhappy.

>To be honest I suspected this was a problem with outdated libraries. I 
>have a fairly out of date gentoo system. Here's the output of
>kde-config:

>spug mythbrowser # kde-config --version
>Qt: 3.3.3
>KDE: 3.2.2
>kde-config: 1.0

>Then I decided to compare mythbrowser 0.18 with 0.17 and found that the

>way the command line arguments are being initialised has changed:

>KCmdLineArgs::init(argc, argv, "mythbrowser", usage , version);

>Had become:

>KCmdLineArgs::init(argc, argv, "mythbrowser", "mythbrowser", usage , 
>version);

>In mythbrowser 0.18.

>I simply changed this back and all started working again.

>Hope this helps...

>Cheers,

>Doug Scoular

Thanks Doug. I think we are making some progress now :-) It looks like
we're exposing a  bug in the kde3.2.x version of KCmdLineArgs to me. I
use 3.3.0 and 3.3.1 and it works fine.

I changed the call to KCmdLineArgs::init because the old call kept
producing a compiler warning about 'init' is deprecated or something
similar.

Because I can't reproduce the problem here it is not possible for me to
debug it.
If you have the time there is a few things you could try to track the
problem down.

Its a long shot but I wonder if  the compiler is getting confused about
which init call to use. Though I can't see how that could be.

Could you try changing it to this and try again.:-
KCmdLineArgs::init(argc, argv, "mythbrowser", "mythbrowser", usage,
version, false);

That should remove any ambiguity about which call to use for the
compiler.

Another thing I noticed looking at the code is the order in which the
arguments are parsed and the creation of the KApplication object looks
back to front to me.
Move 'KApplication a(argc, argv)' to just after
'KCmdLineArgs::addCmdLineOptions(options)'
and before KCmdLineArgs * args = KCmdLineArgs::parsedArgs(); so it looks
something like this:-

KCmdLineArgs::init(argc, argv, "mythbrowser", "mythbrowser", usage,
version, false); KCmdLineArgs::addCmdLineOptions(options);
KApplication a(argc, argv);
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();

That looks more like the example code in the KDE docs. In fact I don't
think we need to pass the arguments to KApplication at all and just
replace KApplication a(argc, argv) with KApplication a;

Thanks for your time.

Paul





_______________________________________________
mythtv-users mailing list
mythtv-users at mythtv.org
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users



More information about the mythtv-users mailing list