PaulCombal / SamRewritten

Steam Achievement Manager For Linux. Rewritten in C++.
GNU General Public License v3.0
350 stars 34 forks source link

Crashing on second lauch of game server #19

Closed telans closed 5 years ago

telans commented 5 years ago

Selecting a DLC or game, then selecting one of them again crashes the program.

Below is what happens when lauching a DLC first, however as far as I know, there aren't any DLC which themselves have achievements, so they could probably be omitted from the game list.

# Loading DLC

[S_API] SteamAPI_Init(): Loaded '/home/telans/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 233010
Steam_SetMinidumpSteamID:  Caching Steam ID:  id [API loaded no]
Received stats for the game, but an error occurrred.

# Going back to menu

Write pipe encountered fatal error.

# Selecting normal game

../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
ERROR: waitpid() on child forked process failed when uploading minidump: 10
ERROR: Could not run steamerrorreporter binary. Uploading minidump in-process
crash_time.dmp[59433]: Uploading dump (out-of-process)
/tmp/dumps/crash_time.dmp
Uploading dump (in-process) [proxy '']
/tmp/dumps/crash_time.dmp
crash_time.dmp[59433]: Finished uploading minidump (out-of-process): success = no
crash_time.dmp[59433]: error: libcurl.so: cannot open shared object file: No such file or directory
crash_time.dmp[59433]: file ''/tmp/dumps/crash_time.dmp'', upload no: ''libcurl.so: cannot open shared object file: No such file or directory''
success = yes
response:  Discarded=1
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
[S_API] SteamAPI_Init(): Loaded '/home/telans/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 224420
Steam_SetMinidumpSteamID:  Caching Steam ID:  id [API loaded no]
Unable to connect to server after 20 retries: /run/user/1000/SamRewritten/224420-ipc.sock

Without selecting a DLC first, SamRewritten still seems to crash on the second time 'opening' a game to change achievements. The logs do appear to be a little different, mainly Assertion Failed: bufRet.TellPut() == sizeof(uint8)

# Selecting game

[S_API] SteamAPI_Init(): Loaded '/home/telans/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 221380
Steam_SetMinidumpSteamID:  Caching Steam ID:  id [API loaded no]
Shutting down server safely.

# Returning to menu - have omitted these ~x50

(samrewritten:60728): Gtk-CRITICAL **: time: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed

(samrewritten:60728): GLib-GObject-WARNING **: time: invalid unclassed pointer in cast to 'GtkWidget'

# Selecting the game for the second time

CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe).  Continuing.
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
ERROR: waitpid() on child forked process failed when uploading minidump: 10
ERROR: Could not run steamerrorreporter binary. Uploading minidump in-process
Uploading dump (in-process) [proxy '']
/tmp/dumps/crash_time.dmp
crash_time.dmp[61826]: Uploading dump (out-of-process)
/tmp/dumps/crash_time.dmp
crash_time.dmp[61826]: Finished uploading minidump (out-of-process): success = no
crash_time.dmp[61826]: error: libcurl.so: cannot open shared object file: No such file or directory
crash_time.dmp[61826]: file ''/tmp/dumps/crash_time.dmp'', upload no: ''libcurl.so: cannot open shared object file: No such file or directory''
Unable to connect to server after 20 retries: /run/user/1000/SamRewritten/221380-ipc.sock
success = yes
response:  Discarded=1
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
[S_API] SteamAPI_Init(): Loaded '/home/telans/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 221380
Steam_SetMinidumpSteamID:  Caching Steam ID:  id [API loaded no]
wgpierce commented 5 years ago

however as far as I know, there aren't any DLC which themselves have achievements, so they could probably be omitted from the game list.

I've looked into how to filter out non-games, and while it is possible, it's pretty involved and is worthy of a separate issue. I'll put all my research on the separate issue if it comes about. Also currently SamRewritten just doesn't show any achievements for non-games or games without achievements, and that could be presented better.

As for the actual issue, I'll take a look.

telans commented 5 years ago

I've looked into how to filter out non-games, and while it is possible, it's pretty involved and is worthy of a separate issue. I'll put all my research on the separate issue if it comes about. Also currently SamRewritten just doesn't show any achievements for non-games or games without achievements, and that could be presented better.

I know that SteamDB lists DLCForAppID as information for an appid (if DLC) , but I'm not sure what api that's from. Sounds like that could be used to filter things out, unless you've already looked at it.

Cheers

wgpierce commented 5 years ago

Yeah that's what I was referencing: it uses some hidden Steam functions under the hood. I'll dump my research on an issue when it's filed (or if you want to file it while I'm fixing this issue :) ).