Jump to content

Recommended Posts

Posted (edited)
On 6/17/2024 at 4:31 AM, schwups 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.

Edited by roytam1

Posted
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.

 

Posted
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
}

 

Posted
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.

  • 1 month later...
Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...