roytam1 Posted June 27, 2024 Posted June 27, 2024 (edited) On 6/17/2024 at 4:31 AM, schwups said: Jumper described the problem. I was stuck with testing in October and couldn't get any further. https://msfn.org/board/topic/181424-firefox-24-52-for-me-and-98/?do=findComment&comment=1252539 https://msfn.org/board/topic/181424-firefox-24-52-for-me-and-98/?do=findComment&comment=1254003 maybe we need a way to detect kernelex and make a special codepath for it. EDIT: alright GetSystemDirectoryA() returns C:\WINDOWS\SYSTEM and not system32, this can be used. EDIT2: changed sqlite3_win32_is_nt() to check return of GetSystemDirectoryA() so if should use non-NT codepath no matter KernelEx setting is, but still getting SQLITE_BUSY in my firefox38-vc2010. Edited June 27, 2024 by roytam1
jumper Posted June 27, 2024 Posted June 27, 2024 On 6/16/2024 at 5:57 AM, roytam1 said: So I wonder if file locking (i.e. LockFileEx(), which SQLite uses when it detects non-9x from KernelEx) is getting problem. I wonder if KernelEx emulates LockFileEx correctly? [Moz]sqlite.dll only version checks for Windows 2.x, not 9x. Hexing that one byte from 2 to 5 should cause it to use the fallback method when compatibility is set to XP. I'm also working on more robust versions of LockFileEx and UnlockFileEx that support both shared and exclusive locks. Full emulation is not possible, but sufficient emulation might be.
roytam1 Posted June 27, 2024 Posted June 27, 2024 4 hours ago, jumper said: [Moz]sqlite.dll only version checks for Windows 2.x, not 9x. Hexing that one byte from 2 to 5 should cause it to use the fallback method when compatibility is set to XP. I'm also working on more robust versions of LockFileEx and UnlockFileEx that support both shared and exclusive locks. Full emulation is not possible, but sufficient emulation might be. no, it checks for dwPlatformId == VER_PLATFORM_WIN32_NT: /* ** This function determines if the machine is running a version of Windows ** based on the NT kernel. */ SQLITE_API int SQLITE_STDCALL sqlite3_win32_is_nt(void){ #if SQLITE_OS_WINRT /* ** NOTE: The WinRT sub-platform is always assumed to be based on the NT ** kernel. */ return 1; #elif defined(SQLITE_WIN32_GETVERSIONEX) && SQLITE_WIN32_GETVERSIONEX if( osInterlockedCompareExchange(&sqlite3_os_type, 0, 0)==0 ){ #if defined(SQLITE_WIN32_HAS_ANSI) OSVERSIONINFOA sInfo; sInfo.dwOSVersionInfoSize = sizeof(sInfo); osGetVersionExA(&sInfo); osInterlockedCompareExchange(&sqlite3_os_type, (sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0); #elif defined(SQLITE_WIN32_HAS_WIDE) OSVERSIONINFOW sInfo; sInfo.dwOSVersionInfoSize = sizeof(sInfo); osGetVersionExW(&sInfo); osInterlockedCompareExchange(&sqlite3_os_type, (sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0); #endif } return osInterlockedCompareExchange(&sqlite3_os_type, 2, 2)==2; #elif SQLITE_TEST return osInterlockedCompareExchange(&sqlite3_os_type, 2, 2)==2; #else /* ** NOTE: All sub-platforms where the GetVersionEx[AW] functions are ** deprecated are always assumed to be based on the NT kernel. */ return 1; #endif }
roytam1 Posted June 30, 2024 Posted June 30, 2024 On 6/27/2024 at 3:05 PM, roytam1 said: maybe we need a way to detect kernelex and make a special codepath for it. EDIT: alright GetSystemDirectoryA() returns C:\WINDOWS\SYSTEM and not system32, this can be used. EDIT2: changed sqlite3_win32_is_nt() to check return of GetSystemDirectoryA() so if should use non-NT codepath no matter KernelEx setting is, but still getting SQLITE_BUSY in my firefox38-vc2010. ah, mozilla always defining SQLITE_WIN32_GETVERSIONEX=0 when compiling SQLite3, so non-NT codepath are never executed. trying to remove this, and SQLite3 no longer returning SQLITE_BUSY, but it crashes when starting in next time, with no hints to debug.
roytam1 Posted June 30, 2024 Posted June 30, 2024 On 6/27/2024 at 3:05 PM, roytam1 said: maybe we need a way to detect kernelex and make a special codepath for it. EDIT: alright GetSystemDirectoryA() returns C:\WINDOWS\SYSTEM and not system32, this can be used. tested and it seems to be work, put some effort to integrate it to my GreenPad: https://github.com/RamonUnch/GreenPad/issues/58#issuecomment-2198607531
schwups Posted August 19, 2024 Author Posted August 19, 2024 On 6/30/2024 at 6:18 PM, roytam1 said: tested and it seems to be work, put some effort to integrate it to my GreenPad: https://github.com/RamonUnch/GreenPad/issues/58#issuecomment-2198607531 Did you compiled a browser with this change to test?
schwups Posted January 9 Author Posted January 9 Youtube: The button "Remind ME Later" on request page for Browser update doesn't work anymore. Now also version 52 and Mypal 29.3 is affected. One solution is to change the useragent (Firefox 68 or higher). Or use RT's forks like Basilisk or Palemoon.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now