Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firebird 2.5.3 hangs on simultaneous connection to the Services API and database [CORE4908] #5200

Closed
firebird-automations opened this issue Aug 12, 2015 · 9 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @SENikitin

Problem occurs after 2.5.3, exists in 2.5.4.

See dump
https://yadi.sk/d/-2RFcesiiFCW8

Commits: 877b056 058c3a9 FirebirdSQL/fbt-repository@e70b65b FirebirdSQL/fbt-repository@0386a2e

====== Test Details ======

Can anyone give scenario about sequence of actions in fbtest ? What should be specified first and what second: attach to services API or to database ? What kind of services should be tested ?

@firebird-automations
Copy link
Collaborator Author

Modified by: @dyemanov

assignee: Alexander Peshkov [ alexpeshkoff ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @AlexPeshkoff

Version: 2.5.4 [ 10585 ]

Version: 2.5.3 [ 10461 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @AlexPeshkoff

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

Fix Version: 2.5.5 [ 10670 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: @SENikitin

Hi,

Problem still exists - we have tested it with yesterday snapshot, Firebird SuperClassic hanged again, dump and pdb are here:
http://ge.tt/2F4o2aM2/v/0?c

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

I can't use dmp & pdb - I have no windows OS. Please provide stack traces text dump.

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

thread 1:

Jrd::Service::Service(const char * service_name=0x0000000000200000, unsigned short spb_length=32, const unsigned char * spb_data=0x5f65636976726573)
*** hangs at dbInitGuard.enter(), file svc.cpp, line 812
jrd8_service_attach(__int64 * user_status=0x000000000198f6f0, const char * service_name=0x000000000198f6f0, Jrd::Service * * svc_handle=0x00000000051b8a08, unsigned short spb_length=0, const char * spb=0x000000000198f8a0)

thread 2:

Jrd::SecurityDatabase::init()
*** hangs at MutexLockGuard guard(mutex), file pwd.cpp, line 248
getUserInfo(Jrd::UserId & user={...}, const DatabaseOptions & options={...})
jrd8_attach_database(__int64 * user_status=0x0000000140000000, const char * filename=0x0000000004d0f560, Jrd::Attachment * * handle=0x00000000051be1d0, short dpb_length=-7728, const unsigned char * dpb=0x0000000004d0f610)

thread 3:

jrd8_attach_database(__int64 * user_status=0x0000000140000000, const char * filename=0x000000000490e270, Jrd::Attachment * * handle=0x000000000000000c, short dpb_length=-6640, const unsigned char * dpb=0x000000000490e320)
*** hangs at guardDbInit.enter(), file jrd.cpp, line 921
isc_attach_database(__int64 * user_status=0x000000000490e530, short file_length=31, const char * file_name=0x000000000490ed01, unsigned int * public_handle=0x000000000490ebb0, short dpb_length=12, const char * dpb=0x000000000490e570)
Jrd::SecurityDatabase::prepare()
Jrd::SecurityDatabase::lookupUser(const char * user_name=0x00000000778eb950, int * uid=0x000000000490e990, int * gid=0x0000000000000006, char * pwd=0x000000000490ebb0)
Jrd::SecurityDatabase::verifyUser(const char * user_name=0x0000000000829ab8, const char * password=0x0000000000000000, const char * password_enc=0x000000000082b498, int * uid=0x0000000140375949, int * gid=0x000000000490ed78, int * node_id=0x000000000490ecf0, const Firebird::StringBaseFirebird::StringComparator\ & remoteId={...})
Jrd::Service::Service(const char * service_name=0x0000000100200000, unsigned short spb_length=32, const unsigned char * spb_data=0x5f65636976726573)
jrd8_service_attach(__int64 * user_status=0x000000000490f6f0, const char * service_name=0x000000000490f6f0, Jrd::Service * * svc_handle=0x0000000000829288, unsigned short spb_length=0, const char * spb=0x000000000490f8a0)

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

SecurityDatabase::lookupUser() holds pwd::mutex and acquires dbInitMutex inside prepare()->jrd8_attach_database
Service::Service() holds dbInitGuard and acquires pwd::mutex inside SecurityDatabase::init() (via siHolder).

@firebird-automations
Copy link
Collaborator Author

Modified by: @pavel-zotov

status: Resolved [ 5 ] => Resolved [ 5 ]

QA Status: No test => Deferred

Test Details: Can anyone give scenario about sequence of actions in fbtest ? What should be specified first and what second: attach to services API or to database ? What kind of services should be tested ?

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment