FB crashes when database is in full shutdown and several sessions make attempts to attach to this DB in infinite loop (3.0 SuperServer only is affected) --------------------------------------------------------------------------------------------------------------------------------------------------------
Key: CORE-6196 URL: http://tracker.firebirdsql.org/browse/CORE-6196 Project: Firebird Core Issue Type: Bug Components: Engine Reporter: Pavel Zotov 1. Create database and change its state to full shutdown 2. Prepare firebird.conf: ======= RemoteServicePort = 3333 IpcName = fb30_SS BugcheckAbort = 1 FileSystemCacheThreshold = 65536K Servermode = Super DefaultDbCachePages = 512K TempBlockSize = 2M TempCacheLimit = 64M LockHashSlots = 22111 LockMemSize = 5M MaxUnflushedWrites = -1 MaxUnflushedWriteTime = -1 ExternalFileAccess = full TempDirectories = D:\TEMP\fbb MaxUserTraceLogSize = 99999 AuthServer = Legacy_Auth,Srp,Win_Sspi AuthClient = Legacy_Auth,Srp,Win_Sspi UserManager = Legacy_UserManager,Srp WireCompression = false WireCrypt = Enabled KeyHolderPlugin = KeyHolder ======= 3. Create batch file (change variables 'fbc' and 'dsn' according to your environment): ======= @echo off setlocal enabledelayedexpansion enableextensions set dtm=19000101000000 call :get_ANSI_precise_dts dtm time_only set dtm=!dtm::=! set dtm=!dtm:.=_! set err_file=%~dpn0.!dtm!.err set fbc=C:\FB\30SS set dsn=localhost:e30 set fbn=firebird.exe set err=%~dpn0. set /a iter=0 :m1 set /a iter=!iter!+1 echo !time! iter # !iter! echo quit; | !fbc!\isql !dsn! -q -user sysdba -pas masterkey 1>nul 2>!err_file! findstr /m /c:"SQLSTATE = 08006" !err_file! 1>nul if NOT errorlevel 1 ( echo !time! No reply from Firebird server. Bye-bye. del !err_file! goto final ) del !err_file! goto m1 :get_ANSI_precise_dts setlocal for /f "tokens=1-2 delims=.+" %%a in ('wmic.exe OS GET LocalDateTime ^| findstr /r /b /c:"20.*."' ) do ( set current_dts=%%a set ms_value=%%b ) set current_dts=!current_dts!.!ms_value:~0,2! @rem 20191021|201404.22 @rem 01234567|890123456 set time_ms=!current_dts:~-9! set current_time=!time_ms:~0,2!:!time_ms:~2,2!:!time_ms:~-5! if /i .%2.==.time_only. ( set result=!current_time! ) else ( set current_date=!current_dts:~0,8! set current_date=!current_date:~-2!.!current_date:~4,2!.!current_dts:~0,4! set result=!current_date! !current_time! ) endlocal & set "%~1=%result%" goto:eof :final ======= 4. Open two cmd.exe and launch this batch in both of them. After very short time FB will crach. Both sessions of running batch will stop themselves because get "SQLSTATE = 08006" in STDERR. Here are dump, stack-trace, firebird.conf and .log: https://drive.google.com/open?id=13KPHXcYhJFBByqFtF1mfPV08KmpDgsF0 PS. SuperServer only is affected, and only 3.0 (I've checked WI-V3.0.5.33184). No such effect on SC and on 4.0 (any mode). -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel