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.
schwups Posted June 21 Author Posted June 21 Serpent/Newmoon latest Versions 20250617: Restore Previous Session, Recently Closed Tabs and Recently Closed Windows seem to be not functional and the History and the Bookmarks created on XP+ can't be used on ME/98 anymore - now empty. So Library could be almost completely broken on Win ME now. Probably the passwords aren't saved anymore and auto fill is broken, too. Maybe even more broke. The next days will show that. 2
defuser Posted June 24 Posted June 24 The same applies to IceAPE-UXP (current version, dated 2025.06.21). As a temporary workaround, I have rolled back the two files "xul.dll" and "mozsqlite3.dll" to previous versions (dated 2025.05.31).
schwups Posted June 24 Author Posted June 24 (edited) Yes, the files for Serpent and Newmoon are XUL and nss3. I already assumed that the problem is related to the Sqlite lib update 3.50.1. I wondered, whether it is possible to edit XUL, but I didn't find the sqlite identifier in it. So that it is possible to avoid the Sqlite update error message on start, if using the new xul file. For me IceAPE-UXP is really not my first choice, because of the 0bit download problem. Or is there a fix out there? Edited June 24 by schwups
defuser Posted June 24 Posted June 24 24 minutes ago, schwups said: For me IceAPE-UXP is really not my first choice, because of the 0bit download problem. Or is there a fix out there? No. I use a temporary workaround - when I need to download something, I copy the download link to another program (for example, Mypal29 or OperaPresto 12.02). I assume that Serpent/Newmoon doesn't have this error? Well, that's quite interesting, and I'll try it out.
schwups Posted June 24 Author Posted June 24 (edited) The 0bit download is a Seamonkey problem and its forks. Firefox and PM aren't affected. Edited June 24 by schwups
schwups Posted June 25 Author Posted June 25 After a further check, I realised that at least "Restore Previous Session, Recently Closed Tabs and Recently Closed Windows" still works with IceApe and Newmoon here. So I see a different behaviour to Serpent.
defuser Posted June 25 Posted June 25 That's right, I've already checked it. In "palemoon-28" (From 2025.05.31) and "basilisk52" (From 2025.05.31), the files are downloading correctly. I've added them to my programs. Thank you. As you mentioned, this is the cause of the new problem: "- import from UXP: No issue - Update SQLite lib to 3.50.1 and require it as syslib. (5ae40cfe) (6c4f2fc44)" For some reason, this new "SQLite 3.50.1" can't work properly anymore. What is missing? I also tested it on a clean version of XP (SP2, from 2004), and there was no issue. Dependency Walker under Windows 98 doesn't show any new dependencies for "mozsqlite3.dll," and I didn't notice any new requirements for "xul.dll." Is there any internal fundamental change in "SQLite" itself that doesn't take into account the features of 9x? I don't understand, as I'm not very familiar with all of this. For now, I'll stick to the previous (stable) versions. 1 hour ago, schwups said: After a further check, I realised that at least "Restore Previous Session, Recently Closed Tabs and Recently Closed Windows" still works with IceApe and Newmoon here. So I see a different behaviour to Serpent. How did you manage to do this? In IceApe, it only works after rolling back the two files mentioned earlier.
schwups Posted June 25 Author Posted June 25 8 minutes ago, defuser said: How did you manage to do this? In IceApe, it only works after rolling back the two files mentioned earlier. I didn't make something special. I tested on two machines and also with fresh profiles. I can only guess. I could test on a more reduced system, maybe I could try with the Kext files I provide on the first page here. 1
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