Tim, All,
I have completed downgrading through the sets of binaries I have and from
that I can summize that this bug was introduced sometime between 3/29 and
4/10. In my 3/29 build, kwrite is fine. In my 4/10 build, this bug effects
kwrite, kate, all editors EXCEPT kedit. In kedit, I can continue to paste away
without any crash (I'm sure it makes no use of katepart...)
So that is the best I can do in narrowing it down rapidly from existing
binaries I have.
Darrell, do you have any binaries between 3/29 and 4/10 that could help
narrow? There were a ton of changes that went into the GIT tree for tdelibs
and tdebase during that two week period. It would be great if we could further
narrow it by simply loading binaries rather going through all the commits...
I've updated 979 with the info.
--
David C. Rankin, J.D.,P.E.
Tim, Darrell, All,
I rebuilt all packages this morning with sources from 4/3 to help narrow
down the kwrite crash issue. The files were built with full debug information.
I don't know if this new backtrace is useful, but it is different from the
prior backtraces in that it points straight at tqt3. (at least to me) I can't
interpret exactly what it is saying, but I'll let the experts decide:
Loaded symbols for /lib/libnss_files.so.2
0xb69ebb20 in __x86.get_pc_thunk.bx () from /opt/tqt3/lib/libtqt-mt.so.3
(gdb) bt
#0 0xb69ebb20 in __x86.get_pc_thunk.bx () from /opt/tqt3/lib/libtqt-mt.so.3
#1 0xb6a12d77 in category (c=...) at ../include/private/qunicodetables_p.h:99
#2 0xb6d89361 in isSpace (ch=...) at tools/qunicodetables_p.h:218
#3 0xb6d7e96f in TQChar::isSpace (this=0x8d8d810) at tools/qstring.cpp:475
#4 0xb5270346 in KateRenderer::textWidth (this=0x8b4e400, textLine=...,
startcol=0,
maxwidth=751, needWrap=0xbfae53d8, endX=0xbfae53cc)
at /build/src/tdelibs/kate/part/katerenderer.cpp:806
#5 0xb524dd97 in KateViewInternal::range (this=0x8bc5e20, realLine=0,
previous=0x0)
at /build/src/tdelibs/kate/part/kateviewinternal.cpp:1331
#6 0xb524f1ae in KateViewInternal::range (this=0x8bc5e20, realLine=0, viewLine=1)
at /build/src/tdelibs/kate/part/kateviewinternal.cpp:1418
#7 0x08bc5e20 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
A strace was also run and I've attached that to bug 979.
http://bugs.pearsoncomputing.net/attachment.cgi?id=576
I also get a lot of undefined symbol messages when strace is running. I
don't know if this will help, but maybe it provides a clue. IIRC, there was a
name mangling patch that went it at some time around here. This is what gets
dumped to konsole:
13:52 tdepv:~> strace -o vbh/tde/err/kwrite/strace0403.txt kwrite
/opt/tqt3/plugins/inputmethods/libqimsw-multi.so: undefined symbol:
_ZN14TQInputContext11sendIMEventEN7TQEvent4TypeERK8TQStringii
/opt/tqt3/plugins/inputmethods/libqsimple.so: undefined symbol:
_ZN14TQInputContext14x11FilterEventEP8TQWidgetP7_XEvent
/opt/tqt3/plugins/inputmethods/libqxim.so: undefined symbol:
_ZN14TQInputContext11filterEventEPK7TQEvent
/opt/tqt3/plugins/inputmethods/libqimsw-multi.so: undefined symbol:
_ZN14TQInputContext11sendIMEventEN7TQEvent4TypeERK8TQStringii
/opt/tqt3/plugins/inputmethods/libqsimple.so: undefined symbol:
_ZN14TQInputContext14x11FilterEventEP8TQWidgetP7_XEvent
/opt/tqt3/plugins/inputmethods/libqxim.so: undefined symbol:
_ZN14TQInputContext11filterEventEPK7TQEvent
/opt/tqt3/plugins/inputmethods/libqimsw-multi.so: undefined symbol:
_ZN14TQInputContext11sendIMEventEN7TQEvent4TypeERK8TQStringii
/opt/tqt3/plugins/inputmethods/libqsimple.so: undefined symbol:
_ZN14TQInputContext14x11FilterEventEP8TQWidgetP7_XEvent
/opt/tqt3/plugins/inputmethods/libqxim.so: undefined symbol:
_ZN14TQInputContext11filterEventEPK7TQEvent
/opt/tqt3/plugins/inputmethods/libqimsw-multi.so: undefined symbol:
_ZN14TQInputContext11sendIMEventEN7TQEvent4TypeERK8TQStringii
/opt/tqt3/plugins/inputmethods/libqsimple.so: undefined symbol:
_ZN14TQInputContext14x11FilterEventEP8TQWidgetP7_XEvent
/opt/tqt3/plugins/inputmethods/libqxim.so: undefined symbol:
_ZN14TQInputContext11filterEventEPK7TQEvent
<snip> (see attached file for remainder)
I also tested kate - same crash! I don't know what Darrell is doing, he
must be living right! I just pasted 'undefined symbol ' into line one until it
would make it wrap and then on the next paste - wham! > crashed. This
backtrace is a bit different, the qt3 error I saw in kwrite appears masked for
some reason?? Here is the kate crash backtrace:
Loaded symbols for /opt/tqt3/plugins/inputmethods/libqimsw-none.so
0xb620dd36 in TQChar::row (this=0x9f4c300) at ../include/ntqstring.h:221
221 ../include/ntqstring.h: No such file or directory.
(gdb) bt
#0 0xb620dd36 in TQChar::row (this=0x9f4c300) at ../include/ntqstring.h:221
#1 0xb620dd88 in category (c=...) at ../include/private/qunicodetables_p.h:104
#2 0xb6584361 in isSpace (ch=...) at tools/qunicodetables_p.h:218
#3 0xb657996f in TQChar::isSpace (this=0x9f4c300) at tools/qstring.cpp:475
#4 0xb5503346 in KateRenderer::textWidth (this=0x9fc6260, textLine=...,
startcol=0,
maxwidth=555, needWrap=0xbf887a08, endX=0xbf8879fc)
at /build/src/tdelibs/kate/part/katerenderer.cpp:806
#5 0xb54e0d97 in KateViewInternal::range (this=0xa08e128, realLine=0,
previous=0x0)
at /build/src/tdelibs/kate/part/kateviewinternal.cpp:1331
#6 0xb54e21ae in KateViewInternal::range (this=0xa08e128, realLine=0, viewLine=1)
at /build/src/tdelibs/kate/part/kateviewinternal.cpp:1418
#7 0x0a08e128 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
What say the experts? Anything look like it points to anything specific?
Worth running a strace on kate?
I also found another bug in the setup wizard when choosing keramik style --
you get no window decorations. (this may be fixed since this was the 4/3
code). Plastik works fine. I had deleted ksycoca and my ~/.trinity profile for
this test, so I was starting over from scratch. I thought I would pass that
along as well.
--
David C. Rankin, J.D.,P.E.
If I understand correctly, any library directory outside of the standard /lib and /usr/lib locations need to be identified in /etc/ld.so.cache. Is this correct?
During my Trinity build and packaging process, I have been inserting /opt/trinity/lib into /etc/ld.so.cache.
Do I need to add /opt/trinity/lib/trinity too or are subdirectories of /opt/trinity/lib automatically found by ldconfig?
Are there any other library locations from Trinity that belong in /etc/ld.so.cache?
When I build Trinity packages, because I am installing to a non standard location, I explicitly declare $LD_LIBRARY_PATH=/opt/trinity/lib in my build environment. I do not declare this variable in during run time. To my understanding, this variable causes the build process to use that location before using library files in the standard locations or /etc/ld.so.cache. Is this correct?
Thanks.
Darrell
Hi all,
I had to see that there is still development going on in your fork of KWin and
I am very unhappy about that. This is something I really want to see resolved,
any development to KWin should happen in KWin, it's such a waste to work on
the same project without coordination.
Let's first recapture the state of TWin:
= Why does TWin exist? =
Because KWin got forked together with everything else from KDE 3.5 to form the
Trinity Desktop Environment (TDE).
= Why has the TDE fork happened? =
The TDE fork existist because of a combination of the following reasons:
* Parts of KDE had to be rewritten in order to be ported to Qt 4
* Early versions of KDE 4.x were lacking functionality compared to KDE 3.5
* Early versions of KDE 4.x had quality and stability issues compared to KDE
3.5
* A general disagreement with some project decisions
* KDE 4.x introduced new technologies unliked by some (e.g. Nepomuk or
Akonadi)
= Do these reasons hold for KWin? =
No! None of the reasons stated above has ever been true for KWin. KWin is a
direct continuation of the KDE 3 version. The codebase did not get rewritten,
the quality of the window manager did not suffer, new functionality got added
as optional addons.
= Is there any other reason justifying the TWin fork? =
Maybe the fact that KWin depends on Qt4/kdelibs4 which is not liked by TDE.
= Is that a reason for a hostile fork as it is at the moment? =
No, the fact that TWin requires Qt 3 is no reason to have the current state
with the hostile fork. Best would be a solution of no fork, but a
collaborative friendly fork should be possible, given that KWin and TWin share
a large code base.
= What can KDE do about the fork? =
Actually pretty much nothing. The license allows TDE to fork KWin - whether we
like it or not. All we can do is force you to change the name and urge you to
work together with us.
= Why do I actually care? =
The KWin development team is rather small. I would like to see more involvment
inside KWin than to see duplicated work in a fork.
Furthermore KWin 3.5 has a very good reputation and is known as rock solid. I
see this reputation questioned if the TWin fork is continued without the
quality checks performed in the KWin development.
Lets have a look at the recent patch for TWin called "Mac Like Switching
Panel". This introduces a new feature to switch through applications and
references an implementation in window maker. To be clear: this functionality
has been present in KWin since version 4.4 (I added it). A little bit of
coordination here would have prevented the duplication of development.
But is there a problem when Trinity adds code, should I care? Well the code is
wrong (review based on patch2.patch on mailing list). In an attempt to copy
everything from window maker code got added to KWin (particular readClass)
which already existed. Lack of knowledge about the KWin source code are
probably the reason that it is unknown that
KWin::Client::resourceName()/resourceClass() provide the window class
attribute.
Another problem is that the code is crashy. For me as an experienced KWin
developer I only need to look at the code and see immediately were it is
likely that the code will crash. Consider that start is NULL and the following
line of code: start->readClass().
How likely is it that a non KWin developer would have spotted this crashy
code? How likely is it that you know how to create such a situation? (I know
it exactly).
It is not surprising that you are not able to add code to KWin which is
correct - hardly anybody not knowing the code base is able to do so. That's
why we perform code review and help new developers to get the code into a
state that it works correctly. We are happy to accept patches from the Trinity
team to KWin as well (of course we only accept patches for current master).
The important difference is that in KWin there is a quality assurance through
the code review by *experienced* KWin developers. This is impossible in TDE as
there are no experienced developers for KWin.
Now I'm not writing this mail to blame you for writing wrong code. If I would
be "evil" I would sit back, relax and wait to see TDE hit the wall which is
approaching faster and faster when crashy code gets added. Remember: one of
the reasons for Trinity is the (no longer) bad quality of KDE 4 code. And you
even use that in your external communication - such crashy changes might
backfire and then you cannot blame KDE.
I'm here now to resolve this issue about TWin together with you. I want to see
the hostile fork go away. From all we see TDE is unable to maintain or even
develop TWin. Please accept this fact as it is. It is nothing bad, I needed
three years of strong involvment in KWin developer before becoming maintainer
and there are still large areas of code blocks where I have no clue about.
Based on that fact we have to look for a solution. In my opinion the best
would be to just use our KWin. And we have some quite useful things about that
in our current development version:
* no longer depends on anything else from kde-workspace
* build options to disable "KDE 4" features (see
http://techbase.kde.org/Projects/KWin/Build_Options)
* mostly runtime dependencies to libplasma
* desktop integration possible through custom QML additions like e.g. Alt+Tab
* currently integrates with three desktop shells
* (under review) build option to change the name of the binary, which would
allow you to generate a kwin_tde or twin binary (automatic adjustment of all
configuration files, etc.) (see https://git.reviewboard.kde.org/r/104299/)
* after feature freeze: branch to build kwin standalone without the need to
run cmake in kde-workspace.
As you can see this is a rather impress list of features which would allow TDE
to use KWin instead of their fork.
Of course KWin depends on Qt 4 and kdelibs 4. We have no interest to support
anything below Qt 4.7 and are currently preparing the transition to Qt 5 and
KDE Frameworks 5. I think that this is only a minor issue to Trinity as to my
understanding TDE can also use Qt 4.
We are open to discuss any concerns regarding integration a Qt4/kdelibs4 based
application into TDE. I am very sure that most of your possible concerns are
rather non-issues and that they can all be easily resolved.
I hope that you consider dropping your hostile fork of KWin and start to
collaborate with your upstream pears at KDE more closely.
Thanks for your time
Martin Gräßlin
KWin maintainer
Tim, Darrell,
As /dev/ammo42 suggested, I captured a strace on the i686 crash. It is
attached to bug 979. (current tdebase and tqt3, tdelibs from 4/16 -- same crash)
http://bugs.trinitydesktop.org/attachment.cgi?id=568
Also, this bug occurs 100% of the time when pasting 'small' amounts of text
(1-2 words at a time) until the line wraps. I can paste 10 lines of text into
kwrite and keep editing - so it looks like something that effects the single
line length computation.
I'll keep incrementally downgrading and report when I narrow the time the
bug was introduced. If anyone can read straces, then take a look.
--
David C. Rankin, J.D.,P.E.
Tim, All,
As I work to downgrade my R14 test boxes to troubleshoot what caused the
kate/kwrite crash, I ran into a question I would like to get your thoughts on.
All my day-to-day boxes run fully updated Archlinux (with one openSuSE box), and
TDE 3.5.12 as the desktop (3.5.10 on SuSE).
QUESTION:
If the crash is due to an Arch update -- "They why do kate/kwrite continue to
function normally in 3.5.12?"
It just strikes me that 3.5.12 would be much more susceptible to break due to
Arch updates that R14. Would we not expect to see this same crash in 3.5.12 if
this was due to an Arch update?
What say the experts? If this was Arch, wouldn't 3.5.12 have broken too?
--
David C. Rankin, J.D.,P.E.
All,
After rebuilds of tdelibs/tdebase yesterday evening (with fresh GIT
update), I have experienced repeated crashes with kwrite becoming
unresponsive. The kwrite window stays open, but no response from the menu,
toolbar or context menu and the screen within the kwrite window does not
repaint itself. (leading to a million copies of anything you move across it).
Here are a couple of screenshots of the behavior after the crash (we've all
seen it before...)
http://nirvana.3111skyline.com/dl/dt/trinity/ss/kwrite-crash-select-buffer.…http://nirvana.3111skyline.com/dl/dt/trinity/ss/kwrite-crash-backspacing.jpg
I repeated the crash twice. It seemed to occur when either inserting text
with the select buffer (select, then middle-mouse paste) or when simply
backspacing to join two lines of text in kwrite. It was bad enough that after
the second crash, I had to give up and just use vim.
For the second attempt working with kwrite, I started it from konsole so I
could look at the kdDebug output. There was nothing out of the ordinary.
These crashes have always been difficult for me to isolate. Can anyone
suggest a test that would help identify the problem. Also, any reports
confirming this behavior would be helpful.
--
David C. Rankin, J.D.,P.E.
I have some patches that I apply for my builds when using ruby 1.9.x rather than 1.8.x. Amarok, tdebindings, and koffice, although the latter has additional problems with ruby 1.9.x.
I want to push these patches to GIT but I can't change code one-way because the ruby 1.9 patches will cause build failures for those folks still building against ruby 1.8.x. I need to add preprocessor checks in the patches to test the ruby version, similar to what we have been doing for building against libpng 1.4/1.5.
Normally there is an APP_MAJOR_VERSION and APP_MINOR_VERSION variable defined in an app header. The ruby people feel the need to be different and don't do this. At least not with the latest versions.
There are two basic methods to extract the version:
RUBY_MAJOR_VERSION="`ruby --version | awk '{print $2}' | awk -F '.' '{print $1}'`"
RUBY_MINOR_VERSION="`ruby --version | awk '{print $2}' | awk -F '.' '{print $2}'`"
Or:
RUBY_MAJOR_VERSION=ruby -rrbconfig -e "puts Config.expand( Config::MAKEFILE_CONFIG['MAJOR'] )"
RUBY_MINOR_VERSION=ruby -rrbconfig -e "puts Config.expand( Config::MAKEFILE_CONFIG['MINOR'] )"
How do I get the cpp code to recognize those variables? Can I do this through the configure process?
Thanks.
Darrell