[Bug 47187] New: Star Wars - The Old Republic (SWTOR): BitRaider WISDA 64-Bit filter driver service fails to start ( load ordering group specified via REG_MULTI_SZ type)

wine-bugs at winehq.org wine-bugs at winehq.org
Mon May 13 04:16:21 CDT 2019


https://bugs.winehq.org/show_bug.cgi?id=47187

            Bug ID: 47187
           Summary: Star Wars - The Old Republic (SWTOR): BitRaider WISDA
                    64-Bit filter driver service fails to start (load
                    ordering group specified via REG_MULTI_SZ type)
           Product: Wine
           Version: 4.8
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: -unknown
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

continuation of bug 47186 and prior.

The launcher UI sits at 'Initializing' and the logs say 'Waiting for BitRaider
to start...'. Suprisingly the failure to start the mini filter driver doesn't
affect the functionality of BitRaider - already downloads all assets with full
speed in the background due to prior bugs fixed.

--- snip ---
.wine/drive_c/ProgramData/BitRaider/common/logs/BR_Debuglog.txt
...
.wine/drive_c/Star Wars-The Old Republic/bitraider/logs/swtor_swtor.txt
...
.wine/drive_c/Star Wars-The Old Republic/logs/launcher_20190511.log
--- snip ---

--- snip ---
...
2019/05/13 09:04:35.902:[INFO]{000DD} - Check HTTP status: 200
2019/05/13 09:04:35.902:[WARN]{000DD} - DLM: Check source done, HTTP code: 200,
request pending: false
2019/05/13 09:04:35.902:[DBUG]{000D4}-[XFER]NE+:10000308: U:000 D:000 V:000
X:428 A:00000011 PF:0/0
2019/05/13 09:04:35.903:[DBUG]{000D4}-[XFER]NE+:00000309: U:000 D:000 V:000
X:429 A:00000011 PF:0/0
2019/05/13 09:04:35.903:[DBUG]{000D4}-[XFER]NE+:10000309: U:000 D:000 V:000
X:430 A:00000011 PF:0/0
2019/05/13 09:04:35.903:[DBUG]{000D4}-[XFER]NE+:00000310: U:000 D:000 V:000
X:431 A:00000011 PF:0/0
2019/05/13 09:04:35.904:[DBUG]{000D4}-[XFER]NE+:10000310: U:000 D:000 V:000
X:432 A:00000011 PF:0/0
2019/05/13 09:04:35.907:[INFO]{000D7} - Custom command for
http://cdn-patch.swtor.com/bitraider/swtor/swtor_13.bin: Range: bytes=0-39;
Request: 0-39
2019/05/13 09:04:35.907:[INFO]{000D7} - Req Length: 40; Chunk size: 524288
2019/05/13 09:04:35.907:[INFO]{000D7} - Range 1: 0-39
2019/05/13 09:04:35.907:[INFO]{000D7} - Queued length: 40; Req length: 40
2019/05/13 09:04:35.907:[INFO]{000DD} - Retrieving
http://cdn-patch.swtor.com/bitraider/swtor/swtor_13.bin
2019/05/13 09:04:35.908:[INFO]{000DD} - Request 0 range: 0-39 Length: 40
2019/05/13 09:04:35.927:[INFO]{000DD} - Request 0 done
2019/05/13 09:04:35.927:[INFO]{000DD} - Request 0 done. error code 0, HTTP
code: 206
2019/05/13 09:04:35.929:[INFO]{000DD} - Request 0: 40 bytes remaining. 40 bytes
avail in buffer
2019/05/13 09:04:35.929:[INFO]{000DD} - Request 0: 40 bytes written at 0
offset.
2019/05/13 09:04:35.929:[INFO]{000DD} - DownloadManager: Fulfilled 40 of 40
bytes requested. Reqs done: 1
2019/05/13 09:04:35.929:[INFO]{000DD} - Clearing custom ranges..
2019/05/13 09:04:35.929:[INFO]{000DD} - Request 0 stats: isFinished:1
bytesRequested:40 bytesWritten:40
2019/05/13 09:04:35.939:[DBUG]{000D7}-XFER: Saved RemoteCopy object
2019/05/13 09:04:35.941:[INFO]{000D7} - WebCopyDestOpen: Opened c:\star
wars-the old republic\BitRaider\BAOC\00000001.bac for writing
2019/05/13 09:04:35.941:[INFO]{000D7} - Custom command for
http://cdn-patch.swtor.com/bitraider/swtor/swtor_13.bin: Range:
bytes=2654338-23216217; Request: 2654338-3178625
2019/05/13 09:04:35.941:[INFO]{000D7} - Req Length: 20561880; Chunk size:
3426986
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 1: 2654338-6081323
2019/05/13 09:04:35.941:[DBUG]{000DD} - DownloadManager: Ratelimit set to
33554432B/s
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 2: 6081324-9508309
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 3: 9508310-12935295
2019/05/13 09:04:35.941:[DBUG]{000DD} - DownloadManager: Setting read buffer
size to 3355443B
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 4: 12935296-16362281
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 5: 16362282-19789267
2019/05/13 09:04:35.941:[INFO]{000D7} - Range 6: 19789268-23216217
2019/05/13 09:04:35.941:[INFO]{000DD} - Retrieving
http://cdn-patch.swtor.com/bitraider/swtor/swtor_13.bin
2019/05/13 09:04:35.941:[INFO]{000DD} - Request 0 range: 2654338-6081323
Length: 3426986
2019/05/13 09:04:35.941:[INFO]{000DD} - Request 1 range: 6081324-9508309
Length: 3426986
2019/05/13 09:04:35.942:[INFO]{000DD} - Request 2 range: 9508310-12935295
Length: 3426986
2019/05/13 09:04:35.942:[INFO]{000DD} - Request 3 range: 12935296-16362281
Length: 3426986
2019/05/13 09:04:35.942:[INFO]{000DD} - Request 4 range: 16362282-19789267
Length: 3426986
2019/05/13 09:04:35.942:[INFO]{000DD} - Request 5 range: 19789268-23216217
Length: 3426950
...
2019/05/13 09:04:39.245:[INFO]{000D7} - DownloadManager Cleanup done,
destroying DownloadManager..
2019/05/13 09:04:39.278:[DBUG]{000E5}-   [VLDT]PD-:00000001: U:000 D:000 V:000
X:5286 [ST:0] 
2019/05/13 09:04:39.279:[DBUG]{000E5}-   [DCMP]PQ+:00000001: U:000 D:001 V:000
X:5286 A:00000011 PF:1/0
2019/05/13 09:04:39.279:[DBUG]{000E5}-   [DCMP]: Sending priority interrupt
signal...
2019/05/13 09:04:39.306:[INFO]{000D7} - DownloadManager destroyed..
2019/05/13 09:04:39.306:[DBUG]{000D7}-XFER: Cleared RemoteCopy object
2019/05/13 09:04:39.306:[INFO]{000D7} - WebCopy: hostUrl: cdn-patch.swtor.com
2019/05/13 09:04:39.306:[INFO]{000D7} - WebCopy: objectUrl:
/bitraider/swtor/swtor_pd_13_42.bin
2019/05/13 09:04:39.306:[INFO]{000D7} - WebCopy: Making sure old source is
closed before opening new one...
2019/05/13 09:04:39.306:[DBUG]{000D7} - DownloadManager: Ratelimit set to
67108864B/s
2019/05/13 09:04:39.306:[DBUG]{000D7} - DownloadManager: Setting read buffer
size to 6710886B
2019/05/13 09:04:39.309:[INFO]{000E9} - Checking
http://cdn-patch.swtor.com/bitraider/swtor/swtor_pd_13_42.bin
2019/05/13 09:04:39.332:[INFO]{000E9} - Check HTTP status: 200
2019/05/13 09:04:39.332:[WARN]{000E9} - DLM: Check source done, HTTP code: 200,
request pending: false
2019/05/13 09:04:39.337:[INFO]{000D7} - Custom command for
http://cdn-patch.swtor.com/bitraider/swtor/swtor_pd_13_42.bin: Range:
bytes=0-39; Request: 0-39
2019/05/13 09:04:39.337:[INFO]{000D7} - Req Length: 40; Chunk size: 524288
2019/05/13 09:04:39.337:[INFO]{000D7} - Range 1: 0-39
2019/05/13 09:04:39.337:[INFO]{000D7} - Queued length: 40; Req length: 40
2019/05/13 09:04:39.337:[INFO]{000E9} - Retrieving
http://cdn-patch.swtor.com/bitraider/swtor/swtor_pd_13_42.bin
2019/05/13 09:04:39.337:[INFO]{000E9} - Request 0 range: 0-39 Length: 40
2019/05/13 09:04:39.356:[INFO]{000E9} - Request 0 done
2019/05/13 09:04:39.357:[INFO]{000E9} - Request 0 done. error code 0, HTTP
code: 206
2019/05/13 09:04:39.359:[INFO]{000E9} - Request 0: 40 bytes remaining. 40 bytes
avail in buffer
2019/05/13 09:04:39.359:[INFO]{000E9} - Request 0: 40 bytes written at 0
offset.
2019/05/13 09:04:39.359:[INFO]{000E9} - DownloadManager: Fulfilled 40 of 40
bytes requested. Reqs done: 1
2019/05/13 09:04:39.359:[INFO]{000E9} - Clearing custom ranges..
2019/05/13 09:04:39.359:[INFO]{000E9} - Request 0 stats: isFinished:1
bytesRequested:40 bytesWritten:40
2019/05/13 09:04:39.369:[DBUG]{000D7}-XFER: Saved RemoteCopy object
2019/05/13 09:04:39.371:[INFO]{000D7} - WebCopyDestOpen: Opened c:\star
wars-the old republic\BitRaider\BAOC\10000001.bac for writing
2019/05/13 09:04:39.371:[INFO]{000D7} - Custom command for
http://cdn-patch.swtor.com/bitraider/swtor/swtor_pd_13_42.bin: Range:
bytes=3390436-24393454; Request: 3390436-3914723
2019/05/13 09:04:39.371:[INFO]{000D7} - Req Length: 21003019; Chunk size:
3500509
...
--- snip ---

BitRaider consists of two services:

--- snip ---
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BRSptStub]
"Description"="BitRaider Helper for unelevated driver loading."
"DisplayName"="BitRaider Mini-Support Service Stub Loader"
"ErrorControl"=dword:00000000
"ImagePath"="\"C:\\ProgramData\\BitRaider\\BRSptStub.exe\""
"ObjectName"="LocalSystem"
"PreshutdownTimeout"=dword:0002bf20
"Start"=dword:00000003
"Type"=dword:00000010
"WOW64"=dword:00000001
--- snip ---

--- snip ---
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BRDriver64_1_3_3_E02B25FC]
"DependOnService"=hex(7):46,00,6c,00,74,00,4d,00,67,00,72,00,00,00
"DisplayName"="BRDriver64_1_3_3_E02B25FC"
"ErrorControl"=dword:00000001
"Group"=hex(7):46,00,73,00,46,00,69,00,6c,00,74,00,65,00,72,00,20,00,41,00,63,\
  00,74,00,69,00,76,00,69,00,74,00,79,00,20,00,4d,00,6f,00,6e,00,69,00,74,00,\
  6f,00,72,00,00,00
"ImagePath"="\\??\\C:\\ProgramData\\BitRaider\\support\\1.3.3\\E02B25FC\\BRDriver64.sys"
"ObjectName"="LocalSystem"
"PreshutdownTimeout"=dword:0002bf20
"Start"=dword:00000003
"Tag"=dword:00000002
"Type"=dword:00000002
"WOW64"=dword:00000001

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BRDriver64_1_3_3_E02B25FC\Instances]
"DefaultInstance"="BRDriver64_1_3_3_E02B25FC"

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BRDriver64_1_3_3_E02B25FC\Instances\BRDriver64_1_3_3_E02B25FC]
"Altitude"="64000"
"Flags"=dword:00000001
--- snip ---

The app writes the load order groups ('Group') of the filter driver as
'REG_MULTI_SZ' type key. As per documentation the type should be 'REG_SZ' hence
Wine ignores it -> kernel driver service not loaded. 

On each WINEPREFIX startup:

--- snip --- 
$ WINEDEBUG=+service wineboot
...
000f:trace:service:scmdatabase_load_services Loading service L"BITS"
000f:trace:service:load_service_config Image path           =
L"C:\\windows\\system32\\svchost.exe -k netsvcs"
000f:trace:service:load_service_config Group                = (null)
000f:trace:service:load_service_config Service account name = L"LocalSystem"
000f:trace:service:load_service_config Display name         = L"BITS Service"
000f:trace:service:load_service_config Service dependencies : (none)
000f:trace:service:load_service_config Group dependencies   : (none)
000f:trace:service:scmdatabase_load_services Loading service
L"BRDriver64_1_3_3_E02B25FC"
000f:err:service:load_reg_string Error 1804 while reading value L"Group"
000f:err:service:scmdatabase_load_services Error 1804 reading registry key for
service L"BRDriver64_1_3_3_E02B25FC" - skipping
000f:trace:service:scmdatabase_load_services Loading service L"BRSptStub"
000f:trace:service:load_service_config Image path           =
L"\"C:\\ProgramData\\BitRaider\\BRSptStub.exe\""
000f:trace:service:load_service_config Group                = (null)
000f:trace:service:load_service_config Service account name = L"LocalSystem"
000f:trace:service:load_service_config Display name         = L"BitRaider
Mini-Support Service Stub Loader"
000f:trace:service:load_service_config Service dependencies : (none)
000f:trace:service:load_service_config Group dependencies   : (none)
...
--- snip --- 

https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-createservicea

--- quote ---
...
lpLoadOrderGroup

The names of the load ordering group of which this service is a member. Specify
NULL or an empty string if the service does not belong to a group.

The startup program uses load ordering groups to load groups of services in a
specified order with respect to the other groups. The list of load ordering
groups is contained in the following registry value:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder
...

Remarks

Group     Load ordering group specified by lpLoadOrderGroup. Note that setting
this value can override the setting of the DependOnService value.
--- quote ---

Wine source:

https://source.winehq.org/git/wine.git/blob/HEAD:/programs/services/services.c#l156

--- snip ---
 156 static DWORD load_service_config(HKEY hKey, struct service_entry *entry)
 157 {
 158     DWORD err, value = 0;
 159     WCHAR *wptr;
 160 
 161     if ((err = load_reg_string(hKey, SZ_IMAGE_PATH,   TRUE,
&entry->config.lpBinaryPathName)) != 0)
 162         return err;
 163     if ((err = load_reg_string(hKey, SZ_GROUP,        0,   
&entry->config.lpLoadOrderGroup)) != 0)
 164         return err;
 165     if ((err = load_reg_string(hKey, SZ_OBJECT_NAME,  TRUE,
&entry->config.lpServiceStartName)) != 0)
 166         return err;
 167     if ((err = load_reg_string(hKey, SZ_DISPLAY_NAME, 0,   
&entry->config.lpDisplayName)) != 0)
 168         return err;
 169     if ((err = load_reg_string(hKey, SZ_DESCRIPTION,  0,   
&entry->description)) != 0)
 170         return err;
 171     if ((err = load_reg_multisz(hKey, SZ_DEPEND_ON_SERVICE, TRUE,
&entry->dependOnServices)) != 0)
 172         return err;
 173     if ((err = load_reg_multisz(hKey, SZ_DEPEND_ON_GROUP, FALSE,
&entry->dependOnGroups)) != 0)
 174         return err;
 175 
 176     if ((err = load_reg_dword(hKey, SZ_TYPE, 
&entry->config.dwServiceType)) != 0)
 177         return err;
 178     if ((err = load_reg_dword(hKey, SZ_START, &entry->config.dwStartType))
!= 0)
 179         return err;
 180     if ((err = load_reg_dword(hKey, SZ_ERROR,
&entry->config.dwErrorControl)) != 0)
 181         return err;
 182     if ((err = load_reg_dword(hKey, SZ_TAG,   &entry->config.dwTagId)) !=
0)
 183         return err;
 184     if ((err = load_reg_dword(hKey, SZ_PRESHUTDOWN,
&entry->preshutdown_timeout)) != 0)
 185         return err;
 186 
 187     if (load_reg_dword(hKey, SZ_WOW64, &value) == 0 && value == 1)
 188         entry->is_wow64 = TRUE;
 189 
 190     WINE_TRACE("Image path           = %s\n",
wine_dbgstr_w(entry->config.lpBinaryPathName) );
 191     WINE_TRACE("Group                = %s\n",
wine_dbgstr_w(entry->config.lpLoadOrderGroup) );
 192     WINE_TRACE("Service account name = %s\n",
wine_dbgstr_w(entry->config.lpServiceStartName) );
 193     WINE_TRACE("Display name         = %s\n",
wine_dbgstr_w(entry->config.lpDisplayName) );
 194     WINE_TRACE("Service dependencies : %s\n", entry->dependOnServices[0] ?
"" : "(none)");
 195     for (wptr = entry->dependOnServices; *wptr; wptr += lstrlenW(wptr) +
1)
 196         WINE_TRACE("    * %s\n", wine_dbgstr_w(wptr));
 197     WINE_TRACE("Group dependencies   : %s\n", entry->dependOnGroups[0] ?
"" : "(none)");
 198     for (wptr = entry->dependOnGroups; *wptr; wptr += lstrlenW(wptr) + 1)
 199         WINE_TRACE("    * %s\n", wine_dbgstr_w(wptr));
 200 
 201     return ERROR_SUCCESS;
 202 }
--- snip ---

Related article about the topic:

https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/load-order-groups-and-altitudes-for-minifilter-drivers
("Load Order Groups and Altitudes for Minifilter Drivers")

$ sha1sum SWTOR_setup.exe 
c538935eff4ec90ce2e48dc7e515a8dec2f15f58  SWTOR_setup.exe

$ du -sh SWTOR_setup.exe 
32M    SWTOR_setup.exe

$ wine --version
wine-4.8

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list