Franky/Threadsafe checklist

Revision as of 14:53, 14 May 2009 by Derrell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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