PDA

View Full Version : Devel Compile SegFault



fransick
03-17-2024, 05:45 AM
Hi, cn187.

Seeing the following backtrace when using the devel compile. Only snagged the last few lines as you can see it's 60k+ lines. Any idea what's going on here?


#68258 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68259 0x00007ffff7a8830a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#68260 0x00007ffff72ffd4f in QHeaderView::sortIndicatorChanged(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68261 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68262 0x00007ffff7a8830a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#68263 0x00007ffff72ffd4f in QHeaderView::sortIndicatorChanged(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68264 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68265 0x00007ffff7a8830a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#68266 0x00007ffff72ffd4f in QHeaderView::sortIndicatorChanged(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68267 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68268 0x00007ffff7a8830a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#68269 0x00007ffff72ffd4f in QHeaderView::sortIndicatorChanged(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68270 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68271 0x00007ffff7a8830a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#68272 0x00007ffff72ffd4f in QHeaderView::sortIndicatorChanged(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68273 0x00007ffff732f739 in QTreeView::sortByColumn(int, Qt::SortOrder) () at /lib64/libQtGui.so.4
#68274 0x00000000004eaafb in SEQListView::restoreColumns() (this=0xdc3560) at seqlistview.cpp:259
#68275 0x00000000004af1e6 in ExperienceWindow::ExperienceWindow(DataLocationMgr const*, Player*, GroupMgr*, ZoneMgr*, QWidget*, char const*) (this=0xccc8e0, dataLocMgr=<optimized out>, player=
0x55883b0, groupMgr=<optimized out>, zoneMgr=<optimized out>, parent=0x7fffffffd4f0, name=0x0) at experiencelog.cpp:273
#68276 0x000000000046fe2e in EQInterface::EQInterface(DataLocationMgr*, QWidget*, char const*) (this=0x7fffffffd4f0, dlm=<optimized out>, parent=<optimized out>, name=<optimized out>) at interface.cpp:385
#68277 0x0000000000429a90 in main(int, char**) (argc=1, argv=0x7fffffffe098) at main.cpp:749

cn187
03-17-2024, 09:05 AM
Oof. That's a big stack trace.

I have a rough idea of what's happening, and it's related to a fix I put in for column sorting issues. I've tested it under Qt5 and it seems to work fine, but apparently not under Qt4. So thanks for being the guinea pig ;-)

I can reproduce it here on my Qt4 vm, so hopefully I'll have a fix for you in an hour or two.

cn187
03-17-2024, 09:54 AM
Ok, with further testing, it looks like the original issue that I was trying to fix only affects Qt5 and newer, and the crash due to the fix only affects Qt4.

So for now, the simple work around is to only use the fix when the user is running Qt5+. I've just made a commit to do that. So hopefully that solves it for you.

Eventually I want to rework all the windowing backend (including sorting) so this kicks the can down the road a bit, but it will keep things moving for now.

Thanks for running/testing my dev branch. It's very much appreciated.

fransick
03-17-2024, 10:29 AM
That worked. Thank you! I am toying with installing Qt5 on Centos7 but looks like I can put that off for a bit longer :)

I am seeing some guilds appear as a number in the spawnlist. All my old tricks for forcing an update to guilds.dat seem to be obsolete. Heck, I cannot even find the world opcode for the guild list anymore. Seems like the guild list may have additional data in it as the numbering includes way more digits than it used to. Any places you'd recommend looking to see if I can fix it? I am generally pretty good with structs and op codes so willing to give it a go.

cn187
03-17-2024, 10:59 AM
The guild packet stuff changed at some point, and I reworked it to make it work again. They're no longer sending the global list. Instead (unless they changed it again since I last looked at it), when you zone in, they send a list of guilds with members in the zone, and then if someone else zones in from a guild not in that list, they send a packet with that player's guild.

Newby usually doesn't include these opcodes in his updates, but looking at the binary, I think the current values should be

OP_GuildsInZoneList 5f77
OP_NewGuildInZone 5fbb

Though I haven't verified via packet logs that these are correct.

Edit: Also, regarding the numbering - the guild update packets include a constant that only seemed to be different if you're on a different server. So I assumed it was some sort of server ID or something. You wouldn't think it would be necessary except to support something like cross-server guild chat. So I assume there's some legacy reason for it - maybe because of something to do with the guild management backend. (back in the day, did server names used to have to be unique across all servers?)

fransick
06-29-2024, 09:19 AM
Hey, Cn. Not sure if you are looking for any testing but looks like some of the packetcapture work is not happy with my setup. Getting an immediate seg fault on launch. Managed to capture the following:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff67b044b in pthread_setschedparam () from /lib64/libpthread.so.0
Missing separate debuginfos, use: debuginfo-install GConf2-3.2.6-8.el7.x86_64 PackageKit-gtk3-module-1.1.10-2.el7.centos.x86_64 adwaita-gtk2-theme-3.28-2.el7.x86_64 atk-2.28.1-2.el7.x86_64 bzip2-libs-1.0.6-13.el7.x86_64 cairo-1.15.12-4.el7.x86_64 dbus-glib-0.100-7.el7.x86_64 dbus-libs-1.10.24-15.el7.x86_64 elfutils-libelf-0.176-5.el7.x86_64 elfutils-libs-0.176-5.el7.x86_64 expat-2.1.0-15.el7_9.x86_64 fontconfig-2.13.0-4.3.el7.x86_64 freetype-2.8-14.el7_9.1.x86_64 fribidi-1.0.2-1.el7_7.1.x86_64 gdk-pixbuf2-2.36.12-3.el7.x86_64 glib2-2.56.1-9.el7_9.x86_64 glibc-2.17-326.el7_9.3.x86_64 graphite2-1.3.10-1.el7_3.x86_64 gtk2-2.24.31-1.el7.x86_64 harfbuzz-1.7.5-2.el7.x86_64 libICE-1.0.9-9.el7.x86_64 libSM-1.2.2-2.el7.x86_64 libX11-1.6.7-5.el7_9.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXcomposite-0.4.4-4.1.el7.x86_64 libXcursor-1.1.15-1.el7.x86_64 libXdamage-1.1.4-4.1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libXfixes-5.0.3-1.el7.x86_64 libXi-1.7.9-1.el7.x86_64 libXinerama-1.1.3-2.1.el7.x86_64 libXrandr-1.5.1-2.el7.x86_64 libXrender-0.9.10-1.el7.x86_64 libattr-2.4.46-13.el7.x86_64 libblkid-2.23.2-65.el7_9.1.x86_64 libcanberra-0.30-9.el7.x86_64 libcanberra-gtk2-0.30-9.el7.x86_64 libcap-2.22-11.el7.x86_64 libffi-3.0.13-19.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 libgcrypt-1.5.3-14.el7.x86_64 libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 libgpg-error-1.12-3.el7.x86_64 libicu-50.2-4.el7_7.x86_64 libmount-2.23.2-65.el7_9.1.x86_64 libogg-1.3.0-7.el7.x86_64 libpcap-1.5.3-13.el7_9.x86_64 libpng-1.5.13-8.el7.x86_64 libselinux-2.5-15.el7.x86_64 libstdc++-4.8.5-44.el7.x86_64 libtdb-1.3.18-1.el7.x86_64 libthai-0.1.14-9.el7.x86_64 libtool-ltdl-2.4.2-22.el7_3.x86_64 libuuid-2.23.2-65.el7_9.1.x86_64 libvorbis-1.3.3-8.el7.1.x86_64 libxcb-1.13-1.el7.x86_64 lz4-1.8.3-1.el7.x86_64 nss-softokn-freebl-3.90.0-6.el7_9.x86_64 pango-1.42.4-4.el7_7.x86_64 pcre-8.32-17.el7.x86_64 pixman-0.34.0-1.el7.x86_64 qt-4.8.7-9.el7_9.x86_64 qt-x11-4.8.7-9.el7_9.x86_64 systemd-libs-219-78.el7_9.9.x86_64 xz-libs-5.2.2-2.el7_9.x86_64 zlib-1.2.7-21.el7_9.x86_64
#0 0x00007ffff67b044b in pthread_setschedparam () at /lib64/libpthread.so.0
#1 0x000000000045a60b in PacketCaptureThread::setFilter(char const*, char const*, bool, unsigned char, unsigned short, unsigned short) (this=
0xcf19c0, device=0xcba8a8 "enp0s25", hostname=<optimized out>, realtime=<optimized out>, address_type=<optimized out>, zone_port=<optimized out>, client_port=0) at packetcapture.cpp:425
#2 0x000000000045a7cf in PacketCaptureThread::start(char const*, char const*, bool, unsigned char) (this=0xcf19c0, device=0xcba8a8 "enp0s25", host=host@entry=0xcba778 "127.0.0.0", realtime=realtime@entry=true, address_type=address_type@entry=11 '\v') at packetcapture.cpp:138
#3 0x000000000045771e in EQPacket::EQPacket(QString const&, QString const&, unsigned short, QString, QString, QString, bool, bool, bool, int, signed char, QObject*, char const*) (this=0xcb0550, worldopcodesxml=..., zoneopcodesxml=..., arqSeqGiveUp=<optimized out>, device=..., ip=..., mac_address=..., realtime=true, sessionTrackingFlag=true, recordPackets=false, playbackPackets=0, playbackSpeed=0 '\000', parent=0x7fffffffd4f0, name=0x54e05d "packet") at packet.cpp:214
#4 0x000000000046fbd6 in EQInterface::EQInterface(DataLocationMgr*, QWidget*, char const*) (this=0x7fffffffd4f0, dlm=<optimized out>, parent=<optimized out>, name=<optimized out>) at interface.cpp:263
#5 0x000000000042a850 in main(int, char**) (argc=1, argv=0x7fffffffe098)
at main.cpp:749

cn187
06-29-2024, 01:12 PM
I'm *always* looking for more testing.

Anyway - Sorry about that, something got out of order when I restructured things. Odd that it didn't crash on my system though. It should have.

I just committed what should be the fix. I did a quick compile, but haven't tested it (not at my EQ machine right now).

Let me know if you run into any more issues.