ValveSoftware / SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
921 stars 45 forks source link

Unable to update base station firmware with 2.x SteamVR (lastest tried is 2.1.8) #653

Open twhitehead opened 10 months ago

twhitehead commented 10 months ago

Your system information

Please describe your issue in as much detail as possible:

If I try and update my base stations through the update pop up or the devices → base stations menu, the Updating Base Station window shows up briefly and then it and all other SteamVR windows vanish. Restarting says it was interrupted, and picking recovery just results in the same thing happening again.

The log files don't show much, but in the terminal where I started steam, it says

...
Thu Nov 30 2023 17:18:04.853186 [Info] - [NRF (HMD)] [Scan] Stop Scanning. All scan completion candidates found.
Thu Nov 30 2023 17:18:04.871785 [Info] - [NRF (HMD)] [Scan] Scan Stopped. Scan state cleanup.
Thu Nov 30 2023 17:18:04.872914 [Info] - [NRF (HMD)] [Scan] <= Exiting Context: (0.04 seconds)
Thu Nov 30 2023 17:18:04.873017 [Info] - [NRF (HMD)] BLE Serialization Shutdown.
Thu Nov 30 2023 17:18:04.907893 [Info] - [NRF (HMD)] SD RPC Info: serial port /dev/ttyACM0 closed.
Thu Nov 30 2023 17:18:04.907966 [Info] - [Bluetooth Controller] [BS_Scan] Setting Radio Mode: Valve
free(): invalid pointer

This free(): invalid pointer line does not seem to be logged anywhere else. Running coredumpctl shows that vrmonitor dumps core due to SIGABRT, so I attached a debugger and got a backtrace for you

(lldb) bt
* thread ValveSoftware/steam-for-linux#14, name = 'BaseStationWork', stop reason = signal SIGABRT
  * frame #0: 0x00007f79d90a1adc libc.so.6`__pthread_kill_implementation(threadid=<unavailable>, signo=6, no_tid=<unavailable>) at pthread_kill.c:44:76
    frame ValveSoftware/steam-for-linux#1: 0x00007f79d9052cb6 libc.so.6`__GI_raise(sig=6) at raise.c:26:13
    frame ValveSoftware/steam-for-linux#2: 0x00007f79d903c8ba libc.so.6`__GI_abort at abort.c:79:7
    frame ValveSoftware/steam-for-linux#3: 0x00007f79d903d5f5 libc.so.6`__libc_message.cold at libc_fatal.c:150:3
    frame ValveSoftware/steam-for-linux#4: 0x00007f79d90ab785 libc.so.6`malloc_printerr(str="") at malloc.c:5651:3
    frame ValveSoftware/steam-for-linux#5: 0x00007f79d90ad524 libc.so.6`_int_free(av=<unavailable>, p=<unavailable>, have_lock=0) at malloc.c:4425:5
    frame ValveSoftware/steam-for-linux#6: 0x00007f79d90afe83 libc.so.6`__GI___libc_free(mem=<unavailable>) at malloc.c:3367:7
    frame ValveSoftware/steam-for-linux#7: 0x0000556ada5ebaa8 vrmonitor`std::vector<basestation_scan_t, std::allocator<basestation_scan_t>>::~vector() + 248
    frame ValveSoftware/steam-for-linux#8: 0x0000556ada5ea4e0 vrmonitor`CQBaseStationControllerWorker::OnWorker_BaseStationFirmwareUpdate(unsigned long long, QString const&, unsigned int, EBaseStationComponent_t, QString const&) + 2048
    frame ValveSoftware/steam-for-linux#9: 0x0000556ada5a19a2 vrmonitor`CQBaseStationControllerWorker::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 450
    frame ValveSoftware/steam-for-linux#10: 0x00007f79d94c0402 libQt5Core.so.5`QObject::event(QEvent*) + 210
    frame ValveSoftware/steam-for-linux#11: 0x00007f79d7f554dc libQt5Widgets.so.5`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 140
    frame ValveSoftware/steam-for-linux#12: 0x00007f79d7f5a640 libQt5Widgets.so.5`QApplication::notify(QObject*, QEvent*) + 896
    frame ValveSoftware/steam-for-linux#13: 0x00007f79d94916a3 libQt5Core.so.5`QCoreApplication::notifyInternal(QObject*, QEvent*) + 195
    frame ValveSoftware/steam-for-linux#14: 0x00007f79d9493913 libQt5Core.so.5`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 483
    frame ValveSoftware/steam-for-linux#15: 0x00007f79d94e66f3 libQt5Core.so.5`___lldb_unnamed_symbol8395 + 19
    frame ValveSoftware/steam-for-linux#16: 0x00007f79d6d22e6b libglib-2.0.so.0.6600.8`g_main_context_dispatch + 603
    frame ValveSoftware/steam-for-linux#17: 0x00007f79d6d23118 libglib-2.0.so.0.6600.8`___lldb_unnamed_symbol2378 + 488
    frame ValveSoftware/steam-for-linux#18: 0x00007f79d6d231cf libglib-2.0.so.0.6600.8`g_main_context_iteration + 47
    frame ValveSoftware/steam-for-linux#19: 0x00007f79d94e6ae7 libQt5Core.so.5`QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 87
    frame ValveSoftware/steam-for-linux#20: 0x00007f79d948f252 libQt5Core.so.5`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 306
    frame ValveSoftware/steam-for-linux#21: 0x00007f79d929e96c libQt5Core.so.5`QThread::exec() + 140
    frame ValveSoftware/steam-for-linux#22: 0x00007f79d92a37df libQt5Core.so.5`___lldb_unnamed_symbol6294 + 303
    frame ValveSoftware/Source-1-Games#2674: 0x00007f79d909fe24 libc.so.6`start_thread(arg=<unavailable>) at pthread_create.c:444:8
    frame ValveSoftware/steam-for-linux#24: 0x00007f79d91219b0 libc.so.6`__clone3 at clone3.S:81

which appears to agree well with the free(): invalid pointer message.

Here is the status of the other threads for good measure too

(lldb) thread list
Process 683191 stopped
  thread ValveSoftware/steam-for-linux#1: tid = 683191, 0x00007f79d911477f libc.so.6`__GI___poll(fds=0x0000556adb62a6a0, nfds=4, timeout=20) at poll.c:29:10, name = 'vrmonitor'
  thread ValveSoftware/steam-for-linux#2: tid = 683219, 0x00007f79d911477f libc.so.6`__GI___poll(fds=0x00007f79d07febc8, nfds=1, timeout=-1) at poll.c:29:10, name = 'QXcbEventReader'
  thread ValveSoftware/steam-for-linux#3: tid = 683234, 0x00007f79d911477f libc.so.6`__GI___poll(fds=0x00007f79c00038e0, nfds=1, timeout=-1) at poll.c:29:10, name = 'Qt bearer threa'
  thread ValveSoftware/steam-for-linux#5: tid = 683237, 0x00007f79d911477f libc.so.6`__GI___poll(fds=0x00007f79bc003ae0, nfds=1, timeout=-1) at poll.c:29:10, name = 'AudioWorker'
  thread ValveSoftware/steam-for-linux#6: tid = 683243, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonitor:cs0'
  thread ValveSoftware/steam-for-linux#7: tid = 683244, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonit:disk$0'
  thread ValveSoftware/steam-for-linux#8: tid = 683245, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonitor:sh0'
  thread ValveSoftware/steam-for-linux#9: tid = 683246, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonito:shlo0'
  thread ValveSoftware/steam-for-linux#10: tid = 683254, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonito:gdrv0'
  thread ValveSoftware/steam-for-linux#11: tid = 683255, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonito:gdrv0'
  thread ValveSoftware/steam-for-linux#12: tid = 683314, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonito:gdrv0'
  thread ValveSoftware/steam-for-linux#13: tid = 683315, 0x00007f79d909ca36 libc.so.6`__futex_abstimed_wait_common at futex-internal.c:57:12, name = 'vrmonitor:sh1'
* thread ValveSoftware/steam-for-linux#14: tid = 683316, 0x00007f79d90a1adc libc.so.6`__pthread_kill_implementation(threadid=<unavailable>, signo=6, no_tid=<unavailable>) at pthread_kill.c:44:76, name = 'BaseStationWork', stop reason = signal SIGABRT
  thread ValveSoftware/steam-for-linux#15: tid = 683330, 0x00007f79d911477f libc.so.6`__GI___poll(fds=0x00007f797c0034e0, nfds=1, timeout=-1) at poll.c:29:10, name = 'Qt HTTP thread'

Steps for reproducing this issue:

  1. Start SteamVR by clicking green play button
  2. Base stations show up with '!' mark
  3. Click base station icon pops up dialogue saying update is available
  4. Picking update device brings up update device dialogue that says it will quit any currently running VR applications
  5. Picking yes say preparing system for device update
  6. Update base station window briefly pops up and then vanishes along with all other SteamVR windows
Hicks79 commented 10 months ago

Hi, I try to update the stations and the same thing happens to me. SteamVR closes leaving the update in the middle of the process.

1) Start SteamVR

imagen

imagen

imagen

then SteamVR is closed.

odinu commented 10 months ago

I think this is a duplicate because afaik this has never worked on Linux.

Hicks79 commented 10 months ago

I think this is a duplicate because afaik this has never worked on Linux.

a year ago I could update everything without problems and play HL:A, then came SteamVr updates and all problems.

twhitehead commented 10 months ago

Does seem like there are a few prior firmware update issues going way back to early 1.x releases

I know there was some firmware updates when I first unpacked the index. Can't recall if that included the lighthouses or not though. I had also thought I had read somewhere that someone updated their firmware by reverting to one of the earlier 2.x versions. I can't seem to find it now though. I guess, given some time, I could try the earlier 2.x versions.

Kaydax commented 4 months ago

I'm having the same issue. It just closes without any warning and no update happens

J37T3R commented 2 months ago

Add me to the list of people having this problem.

Hicks79 commented 2 months ago

Hi I put all logs here, this problem is related with my logs

https://github.com/ValveSoftware/SteamVR-for-Linux/issues/690#issuecomment-2260941754

Thanks VALVe <3