slackware.ru
http://www.slackware.ru/forum/

QutIm сборка пакета в current
http://www.slackware.ru/forum/viewtopic.php?f=22&t=2011
Страница 1 из 1

Автор:  Wertos [ 30 сен 2017 22:56 ]
Заголовок сообщения:  QutIm сборка пакета в current

Сборка проходит без ошибок, но при запуске "Ошибка сегментирования" ! Есть возможность отловить и исправить эту ошибку, но вначале отловить.
qutim загружаю отсюда http://qutim.org/download - последнюю версию.
И может ли такое быть при использовании make -j3 ?
слакбилд:
Код:
#!/bin/sh

# Slackware build script for qutim
# Copyright by Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy 2012
# Based on slackbuilds.org perl template.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

PRGNAM=qutim
VERSION=${VERSION:-0.3.3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i486 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC -DDEBUG -g"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

DOCS="AUTHORS CCBYSA COPYING GPL README.mediawiki"

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $PRGNAM-$VERSION
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# detailed cmake options are from archlinux
# https://aur.archlinux.org/packages/qu/qutim-git/PKGBUILD
mkdir -p build
cd build
  cmake \
    -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DLIB_SUFFIX=${LIBDIRSUFFIX} \
    -DMAN_INSTALL_DIR=/usr/man \
    -DASTRAL:BOOL=0 \
    -DKDEINTEGRATION:BOOL=0 \
    -DIRC:BOOL=0 \
    -DCMAKE_BUILD_TYPE=Debug ..
  make
  make install DESTDIR=$PKG
cd ..

find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

mkdir $PKG/usr/doc
mv $PKG/usr/share/$PRGNAM/doc $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

Автор:  bormant [ 01 окт 2017 02:33 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

У меня на 14.2 x86_64 qutim 0.3.3.p_1 собрался и запустился с qt-4.8.7 (знаю, что был нужен qt5).

По поводу отловить -- начать стоит со стектрейса на момент ошибки, что-то вроде:
http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html
http://dolzhenko.blogspot.ru/2008/10/se ... umped.html

Автор:  Wertos [ 01 окт 2017 08:55 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

bash-4.4# qutim
Код:
Core::ProfileCreationPage::ProfileCreationPage(QWidget*)???
!!!!!!! '/usr/share/xsessions/plasma' '0x0' ''
"sni-qt/26822" WARN  08:37:28.250 void StatusNotifierItemFactory::connectToSnw() Invalid interface to SNW_SERVICE
QXdg: "/usr/share/icons/default.kde4/base/8x8/places" is unknown dir
QXdg: "/usr/share/icons/default.kde4" is unknown dir
QXdg: "/usr/share/icons/hicolor" is unknown dir
QXdg: "/usr/share/apps/qutim/icons/hicolor" is unknown dir
UnityLauncher::UnityLauncher(QObject*)
Unable to send message
Ошибка сегментирования

bash-4.4# ulimit -c unlimited
bash-4.4# qutim
Код:
Core::ProfileCreationPage::ProfileCreationPage(QWidget*)???
!!!!!!! '/usr/share/xsessions/plasma' '0x0' ''
"sni-qt/26869" WARN  08:48:27.633 void StatusNotifierItemFactory::connectToSnw() Invalid interface to SNW_SERVICE
UnityLauncher::UnityLauncher(QObject*)
Unable to send message
Ошибка сегментирования (стек памяти сброшен на диск)


gdb qutim core
Код:
GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-slackware-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from qutim...(no debugging symbols found)...done.
[New LWP 26869]
[New LWP 26870]
[New LWP 26871]
[New LWP 26872]
[New LWP 26873]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `qutim'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fb9b5ad6805 in qutim_sdk_0_3::ChatUnit::metaContact() () from /usr/lib64/libqutim.so.0
[Current thread is 1 (Thread 0x7fb9b7bd4540 (LWP 26869))]
(gdb)

(gdb) run
Starting program: /usr/bin/qutim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core::ProfileCreationPage::ProfileCreationPage(QWidget*)???
!!!!!!! '/usr/share/xsessions/plasma' '0x0' ''
[New Thread 0x7fffd2e77700 (LWP 26890)]
"sni-qt/26886" WARN  08:50:47.562 void StatusNotifierItemFactory::connectToSnw() Invalid interface to SNW_SERVICE
UnityLauncher::UnityLauncher(QObject*)
Unable to send message
[New Thread 0x7fffd1993700 (LWP 26891)]

Thread 1 "qutim" received signal SIGSEGV, Segmentation fault.
0x00007ffff5e8f805 in qutim_sdk_0_3::ChatUnit::metaContact() () from /usr/lib64/libqutim.so.0
(gdb)


Я правильно понимаю что ошибка в этой функции ?
Код:
ChatUnit::metaContact()

Автор:  bormant [ 01 окт 2017 10:36 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Цитата:
правильно понимаю что ошибка в этой функции

Не совсем. В этой функции оно упало, обратившись по нулевому указателю или что-то вроде того, и было убито системой. Реальная ошибка могла быть где-то выше по коду функции или по стеку вызовов. Поэтому backtrace посмотреть все же надо.

Рекомендую закомментировать в слакбилде удаление отладочной информации, пересобрать qutim, вывод gdb станет намного информативнее. Насколько вижу, в cmake сборка и так настраивается как отладочная (-DCMAKE_BUILD_TYPE=Debug). Закомментировать нужно это:
Код:
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

Автор:  Wertos [ 01 окт 2017 12:32 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Цитата:
в cmake сборка и так настраивается как отладочная (-DCMAKE_BUILD_TYPE=Debug).

Все DEBUG - я дописал

Автор:  Wertos [ 01 окт 2017 13:20 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

bash-4.4# qutim
Код:
Core::ProfileCreationPage::ProfileCreationPage(QWidget*)???
!!!!!!! '/usr/share/xsessions/plasma' '0x0' ''
"sni-qt/15074" WARN  13:17:37.247 void StatusNotifierItemFactory::connectToSnw() Invalid interface to SNW_SERVICE
UnityLauncher::UnityLauncher(QObject*)
Unable to send message
ASSERT: "!atom || atom->typeMap" in file /tmp/SBo/qutim-git/core/libqutim/config.cpp, line 624
Аварийный останов (стек памяти сброшен на диск)


bash-4.4# gdb qutim core
Код:
GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-slackware-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from qutim...done.
[New LWP 15074]
[New LWP 15075]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `qutim'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007fa55c263c9f in raise () from /lib64/libc.so.6
[Current thread is 1 (Thread 0x7fa55ff8e540 (LWP 15074))]
(gdb) run
Starting program: /usr/bin/qutim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core::ProfileCreationPage::ProfileCreationPage(QWidget*)???
!!!!!!! '/usr/share/xsessions/plasma' '0x0' ''
[New Thread 0x7fffd2e77700 (LWP 15086)]
"sni-qt/15082" WARN  13:18:17.872 void StatusNotifierItemFactory::connectToSnw() Invalid interface to SNW_SERVICE
UnityLauncher::UnityLauncher(QObject*)
Unable to send message
ASSERT: "!atom || atom->typeMap" in file /tmp/SBo/qutim-git/core/libqutim/config.cpp, line 624

Thread 1 "qutim" received signal SIGABRT, Aborted.
0x00007ffff4262c9f in raise () from /lib64/libc.so.6
(gdb) quit
A debugging session is active.

        Inferior 1 [process 15082] will be killed.

Quit anyway? (y or n) y
bash-4.4#

Вроде одно и тоже... Эх... Понимать бы ещё в этом (

Автор:  bormant [ 01 окт 2017 13:46 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Цитата:
Вроде одно и тоже...
Вроде, но нет. Есть точное место в исходниках:
Код:
ASSERT: "!atom || atom->typeMap" in file /tmp/SBo/qutim-git/core/libqutim/config.cpp, line 624
Там следующая конструкция (реализация метода endGroup класса Config):
Код:
void Config::endGroup()
{
        Q_D(Config);
        Q_ASSERT(d->levels.size() > 1);
#ifdef DEBUG           
        const ConfigLevel::Ptr &level = d->levels.at(0);
        const ConfigAtom::Ptr &atom = level->atoms.value(0);
        Q_ASSERT(!atom || atom->typeMap);
#endif
        /*delete*/ d->levels.takeFirst();
}
Вот тот самый Q_ASSERT. Соответственно, либо atom оказался равен NULL, либо atom->typeMap не 0. Опять же, без стектрейса, приведшего в эту точку, совсем всё уныло...

Причем, в релизный код этот фрагмент не попадает никогда.


Цитата:
Понимать бы ещё в этом
Тут уж, извините, ни форумным сообщением, ни форумной темой не обойтись... Жаль, выходит, что утверждение в первом посте темы было слишком смелым:
Wertos писал(а):
Есть возможность отловить и исправить эту ошибку

Автор:  Wertos [ 01 окт 2017 13:56 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Я так понимаю что нужно мануалы по c++ почитать ? Вывести в консоль содержимое atom ?

Автор:  bormant [ 01 окт 2017 14:02 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Если вкратце, нужно знать синтаксис C++ хотя б на троечку, научиться работать с gdb или какой-либо его графической мордой, научиться отлаживать программы на C++ (отладчик даст вам возможность смотреть что-угодно, в том числе и содержимое переменных, добавление вывода в консоль и пересборка в большинстве случаев не потребуются), знать назначение и поведение используемых кодом библиотек хотя бы в общих чертах. Это были универсальные знания.
Помимо них нужно понять общую логику происходящего в конкретном проекте. Понять как должно происходить исполнение по замыслу разработчиков, как фактически пошло, что было причиной и что с этим делать: где и как исправлять, чтобы не наделать новых проблем.

Автор:  Wertos [ 01 окт 2017 14:05 ]
Заголовок сообщения:  Re: QutIm сборка пакета в current

Ясно, вопрос снят и закрыт... С++ я знаю на нолечку, поэтому так (

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/