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?)