Franky/Threadsafe checklist: Difference between revisions

From SambaWiki
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Checklist of areas likely requiring validatation of thread safety. ==
== Checklist of areas likely requiring validatation of thread safety. ==

Bugs to review
* [https://bugzilla.samba.org/show_bug.cgi?id=5813 non-thread-safe function calls]
* [https://bugzilla.samba.org/show_bug.cgi?id=5211 Andrew's list of samba4 issues]. Also see this bug's dependencies.



Global variables in the BSS and Data segments which must be reviewed to see if
Global variables in the BSS and Data segments which must be reviewed to see if
Line 88: Line 93:
* b global_sam_sid
* b global_sam_sid
* b global_tfp
* b global_tfp
* b global_ts
* b got_alarm
* b got_alarm
* b got_major.77004
* b got_major.77004
Line 447: Line 451:


Already Reviewed
Already Reviewed
* b global_ts
** converted to thread-local-storage
* b SMBC_initialized
* b SMBC_initialized
** Created smbc_module_init() function. SMBC_initialized is now the boolean controlling once-initialization for calls to the new function.
** Created smbc_module_init() function. SMBC_initialized is now the boolean controlling once-initialization for calls to the new function.

Latest revision as of 14:53, 14 May 2009

Checklist of areas likely requiring validatation of thread safety.

Bugs to review


Global variables in the BSS and Data segments which must be reviewed to see if they require any protection in a threaded environment.

NOTE: After implementing thread protection on one of these, or determining that it doesn't require any changes, move the entry into the "Already Reviewed" section at the bottom of this page, and make a note of your specific findings or work done.

  • b Globals
  • b ServiceHash
  • b ServicePtrs
  • b __nwrap_cache_gr
  • b __nwrap_cache_pw
  • b already_perm.63808
  • b already_perm.63873
  • b autobind_start
  • b autobind_start_init
  • b bGlobalOnly
  • b bLoaded
  • b backend
  • b backends
  • b buf.4855
  • b bytes_since_reseed
  • b cache
  • b cache
  • b cache_tree
  • b call_id.64160
  • b called.64160
  • b charsets
  • b classname_table
  • b cmdline_lp_ctx
  • b completed.6997
  • b conf_ctx.72086
  • b conf_last_csn
  • b config_backend
  • b cont_fn
  • b conv_handles
  • b conv_silent
  • b corepath
  • b count.63802
  • b counter
  • b counter.63802
  • b current_lang
  • b current_user
  • b current_user_info
  • b db
  • b db
  • b db_ctx
  • b db_ctx.63797
  • b db_sam
  • b dbf
  • b debug_count
  • b debug_num_classes
  • b debugf
  • b default_server_announce
  • b defaults_saved
  • b depth.67473
  • b done_init.64458
  • b done_reseed
  • b dtor_idx.6999
  • b dyn_BINDIR
  • b dyn_CACHEDIR
  • b dyn_CODEPAGEDIR
  • b dyn_CONFIGFILE
  • b dyn_LIBDIR
  • b dyn_LMHOSTSFILE
  • b dyn_LOCKDIR
  • b dyn_LOGFILEBASE
  • b dyn_MODULESDIR
  • b dyn_NCALRPCDIR
  • b dyn_PIDDIR
  • b dyn_PRIVATE_DIR
  • b dyn_SBINDIR
  • b dyn_SHLIBEXT
  • b dyn_SMB_PASSWD_FILE
  • b dyn_STATEDIR
  • b dyn_SWATDIR
  • b extra_time_offset
  • b f.6068
  • b file_lists
  • b format_bufr
  • b format_pos
  • b global_cache
  • b global_clobber_region_function
  • b global_clobber_region_line
  • b global_in_nmbd
  • b global_lock_array
  • b global_machine_password_needs_changing
  • b global_sam_sid
  • b global_tfp
  • b got_alarm
  • b got_major.77004
  • b got_minor.77023
  • b gotalarm
  • b gotalarm
  • b gotintr
  • b h.6067
  • b hash
  • b i.6069
  • b iNumServices
  • b iServiceIndex
  • b idmap_gid_high
  • b idmap_gid_low
  • b idmap_uid_high
  • b idmap_uid_low
  • b in_client
  • b include_depth
  • b initial_gid
  • b initial_uid
  • b initialised
  • b initialised.63872
  • b initialized
  • b initialized
  • b initialized
  • b initialized.4388
  • b initialized.5513
  • b initialized.6065
  • b initialized.63799
  • b initialized.63806
  • b initialized.63982
  • b initialized.64395
  • b initialized.64809
  • b invalid_services
  • b last_dns_check.65080
  • b last_dns_status.65081
  • b lastt
  • b ldb
  • b ldb_backends
  • b local_interfaces
  • b local_machine
  • b log_overflow
  • b lowcase_table
  • b lowcase_table_use_unmap
  • b mapped_file.64056
  • b msg.63951
  • b num_invalid_services
  • b nwrap_gr_global
  • b nwrap_pw_global
  • b old_handler
  • b once_mutex
  • b outfile
  • b override_logfile
  • b p.6070
  • b pdb.64265
  • b pdb_event_ctx
  • b pipe_read
  • b pipe_written
  • b popen_chain
  • b posix_cifsx_locktype
  • b posix_default_lock_was_set
  • b posix_pathnames
  • b probed_ifaces
  • b ra_type
  • b regdb
  • b regdb_refcount
  • b registered_modules
  • b remote_arch_str
  • b remote_machine
  • b reseed_callback
  • b reseed_callback_userdata
  • b result.76870
  • b ret.66976
  • b s.6066
  • b saved_egid
  • b saved_euid
  • b saved_rgid
  • b saved_ruid
  • b select_pipe
  • b server_role
  • b server_zone_offset
  • b share_db
  • b sig_state
  • b smb_my_netbios_names
  • b smb_myname
  • b smb_myworkgroup
  • b smb_num_netbios_names
  • b smb_scope
  • b smb_user_name
  • b smbc_compat_fd_avail
  • b smbc_compat_fd_in_use
  • b smbc_compat_initialized
  • b smbc_compat_nextfd
  • b smbldap_state_lookup_list
  • b sockets
  • b sort_ip
  • b spoolss_state
  • b start_time_hires
  • b statcont
  • b stdout_logging
  • b t
  • b tdb
  • b tdb.65419
  • b tdb_list
  • b tdb_list
  • b tdbd
  • b tdbsam_filename
  • b tevent_abort_fn
  • b tevent_backends
  • b tevent_default_backend
  • b tf.64872
  • b tmp_debug_ctx
  • b total_probed
  • b try_splice_call.63895
  • b ts_initialized
  • b upcase_table
  • b upcase_table_use_unmap
  • b v.5512
  • b valid_table
  • b valid_table_use_unmap
  • b zeros.64945
  • b zeros.65144
  • d AllowDebugChange
  • d DEBUGLEVEL_CLASS
  • d DEBUGLEVEL_CLASS_ISSET
  • d Protocol
  • d __CTOR_END__
  • d __CTOR_LIST__
  • d __DTOR_END__
  • d __DTOR_LIST__
  • d __JCR_END__
  • d __JCR_LIST__
  • d __dso_handle
  • d _x_stderr
  • d _x_stdin
  • d _x_stdout
  • d account_policy_names
  • d anon_sid_array
  • d anonymous_token
  • d asq_ops
  • d attr.69925
  • d attrib_map_to_delete_v22
  • d attrib_map_to_delete_v30
  • d attrib_map_v22
  • d attrib_map_v30
  • d attrs.64804
  • d attrs.65036
  • d audit_category_tab
  • d bAllowIncludeRegistry
  • d bInGlobalSection
  • d bufsize.4856
  • d builtin_aliases
  • d builtin_functions
  • d builtin_registry_paths
  • d builtin_registry_values
  • d creator_owner_users
  • d dcerpc_faults
  • d debug_all_class_hack
  • d debug_all_class_isset_hack
  • d debug_auto_add_unknown_class
  • d debug_level
  • d debug_warn_unknown_class
  • d default_classname_table
  • d dominfo_attr_list
  • d dos_err_strs
  • d dos_errs
  • d dos_msgs
  • d drsblobs_authservice_strings
  • d drsblobs_authservices
  • d drsblobs_calls
  • d drsblobs_endpoint_strings
  • d drsblobs_endpoints
  • d drsuapi_authservice_strings
  • d drsuapi_authservices
  • d drsuapi_calls
  • d drsuapi_endpoint_strings
  • d drsuapi_endpoints
  • d dssetup_authservice_strings
  • d dssetup_authservices
  • d dssetup_calls
  • d dssetup_endpoint_strings
  • d dssetup_endpoints
  • d enum_acl_compat_vals
  • d enum_announce_as
  • d enum_bool_auto
  • d enum_case
  • d enum_config_backend
  • d enum_csc_policy
  • d enum_kerberos_method
  • d enum_ldap_passwd_sync
  • d enum_ldap_sasl_wrapping
  • d enum_ldap_ssl
  • d enum_map_readonly
  • d enum_map_to_guest
  • d enum_printing
  • d enum_protocol
  • d enum_security
  • d enum_smb_signing_vals
  • d epmapper_authservice_strings
  • d epmapper_authservices
  • d epmapper_calls
  • d epmapper_endpoint_strings
  • d epmapper_endpoints
  • d epoll_event_ops
  • d err_classes
  • d eventlog_authservice_strings
  • d eventlog_authservices
  • d eventlog_calls
  • d eventlog_endpoint_strings
  • d eventlog_endpoints
  • d everyone_users
  • d fd.6239
  • d groupmap_attr_list
  • d groupmap_attr_list_to_delete
  • d hard_msgs
  • d idpool_attr_list
  • d in_fd
  • d initshutdown_authservice_strings
  • d initshutdown_authservices
  • d initshutdown_calls
  • d initshutdown_endpoint_strings
  • d initshutdown_endpoints
  • d ldb_backend
  • d ldb_changetypes
  • d ldb_default_attrib_handler
  • d ldb_standard_attribs
  • d longvar_table
  • d lsarpc_authservice_strings
  • d lsarpc_authservices
  • d lsarpc_calls
  • d lsarpc_endpoint_strings
  • d lsarpc_endpoints
  • d ltdb_ops
  • d ltdb_valid_attr_flags
  • d major_version.77005
  • d minor_version.77024
  • d my_vnn
  • d mypid
  • d ncacn_options
  • d ndr_err_code_strings
  • d ndr_table_drsblobs
  • d ndr_table_drsuapi
  • d ndr_table_dssetup
  • d ndr_table_epmapper
  • d ndr_table_eventlog
  • d ndr_table_initshutdown
  • d ndr_table_lsarpc
  • d ndr_table_netdfs
  • d ndr_table_netlogon
  • d ndr_table_ntsvcs
  • d ndr_table_rpcecho
  • d ndr_table_samr
  • d ndr_table_spoolss
  • d ndr_table_srvsvc
  • d ndr_table_svcctl
  • d ndr_table_winreg
  • d ndr_table_wkssvc
  • d netdfs_authservice_strings
  • d netdfs_authservices
  • d netdfs_calls
  • d netdfs_endpoint_strings
  • d netdfs_endpoints
  • d netlogon_authservice_strings
  • d netlogon_authservices
  • d netlogon_calls
  • d netlogon_endpoint_strings
  • d netlogon_endpoints
  • d nmb_header_opcode_names
  • d no_str.71616
  • d nt_authority_users
  • d nt_err_desc
  • d nt_errs
  • d ntlmssp_callbacks
  • d ntsvcs_authservice_strings
  • d ntsvcs_authservices
  • d ntsvcs_calls
  • d ntsvcs_endpoint_strings
  • d ntsvcs_endpoints
  • d objectclass_ops
  • d operational_ops
  • d paged_ops
  • d parm_num.73088
  • d parm_table
  • d parse_tree_sub
  • d pipe_names
  • d pipefd.63894
  • d privs
  • d rap_errmap
  • d rdn_name_ops
  • d regdb_ops
  • d remote_proto
  • d rpcecho_authservice_strings
  • d rpcecho_authservices
  • d rpcecho_calls
  • d rpcecho_endpoint_strings
  • d rpcecho_endpoints
  • d s3_event_ops
  • d sDefault
  • d samr_authservice_strings
  • d samr_authservices
  • d samr_calls
  • d samr_endpoint_strings
  • d samr_endpoints
  • d search_sub
  • d select_event_ops
  • d server_msgs
  • d server_sort_ops
  • d sid_name_type
  • d sidmap_attr_list
  • d smbconf_ops_reg
  • d smbconf_ops_txt
  • d smbconf_reg_ops
  • d socket_options
  • d special_domains
  • d special_values.65122
  • d spoolss_authservice_strings
  • d spoolss_authservices
  • d spoolss_calls
  • d spoolss_endpoint_strings
  • d spoolss_endpoints
  • d srv_role_tab
  • d srvsvc_authservice_strings
  • d srvsvc_authservices
  • d srvsvc_calls
  • d srvsvc_endpoint_strings
  • d srvsvc_endpoints
  • d standard_values.65123
  • d static_init_fns.64808
  • d std_event_ops
  • d svcctl_authservice_strings
  • d svcctl_authservices
  • d svcctl_calls
  • d svcctl_endpoint_strings
  • d svcctl_endpoints
  • d system_sid_array
  • d system_token
  • d tdb_backend
  • d tdgram_bsd_ops
  • d tf
  • d transports
  • d tsocket_address_bsd_ops
  • d tstream_bsd_ops
  • d urand_fd
  • d winreg_authservice_strings
  • d winreg_authservices
  • d winreg_calls
  • d winreg_endpoint_strings
  • d winreg_endpoints
  • d wkssvc_authservice_strings
  • d wkssvc_authservices
  • d wkssvc_calls
  • d wkssvc_endpoint_strings
  • d wkssvc_endpoints
  • d x_stderr
  • d x_stdin
  • d x_stdout
  • d yes_str.71615

Already Reviewed

  • b global_ts
    • converted to thread-local-storage
  • b SMBC_initialized
    • Created smbc_module_init() function. SMBC_initialized is now the boolean controlling once-initialization for calls to the new function.
  • b initialized_ctx_count
    • protected by mutex