fd leak in smb backend
Submitted by Ross Lagerwall
Assigned to gvf..@..e.bugs
Link to original bug (#712270)
Description
"Description of problem: No progress bar or progress bar freeze when copying file over gvfs-smb cf Bug 980985"
This appears to be an fd leak somewhere which causes gvfs to error out because creating a g_wakeup fd fails.
This was originally reported as the same bug as #706225. Both are fd leaks but I believe the root cause is different.
This report also includes the list of open files (https://bugzilla.redhat.com/attachment.cgi?id=773115). It seems like half the fds are sockets and the other half are eventfds.
#0 g_logv (log_domain=0x36b08b314e "GLib", log_level=G_LOG_LEVEL_ERROR, format=<optimized out>, args=args@entry=0x7fff0920eb18) at gmessages.c:981
domain = 0x0
data = 0x0
depth = 0
log_func = 0x36b084e660 <g_log_default_handler>
domain_fatal_mask = <optimized out>
masquerade_fatal = <optimized out>
test_level = <optimized out>
was_fatal = <optimized out>
was_recursion = <optimized out>
msg = 0x1491b50 "Creating pipes for GWakeup: Trop de fichiers ouverts\n"
msg_alloc = 0x1491b50 "Creating pipes for GWakeup: Trop de fichiers ouverts\n"
i = 2
#1 0x00000036b084eff2 in g_log (log_domain=log_domain@entry=0x36b08b314e "GLib", log_level=log_level@entry=G_LOG_LEVEL_ERROR, format=format@entry=0x36b09056c0 "Creating pipes for GWakeup: %s\n") at gmessages.c:1010
args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fff0920ebf0, reg_save_area = 0x7fff0920eb30}}
#2 0x00000036b08864db in g_wakeup_new () at gwakeup.c:163
error = 0x7f85801fd970
wakeup = 0x7f8550001760
#3 0x00000036b843571f in g_cancellable_make_pollfd (cancellable=cancellable@entry=0x7f858031e490, pollfd=pollfd@entry=0x1495510) at gcancellable.c:406
__PRETTY_FUNCTION__ = "g_cancellable_make_pollfd"
#4 0x00000036b846d8a0 in socket_source_new (cancellable=0x7f858031e490, condition=(G_IO_IN | G_IO_ERR | G_IO_HUP), socket=0x12a33f0) at gsocket.c:3265
source = 0x1495490
socket_source = 0x1495490
#5 g_socket_create_source (socket=0x12a33f0, condition=condition@entry=G_IO_IN, cancellable=cancellable@entry=0x7f858031e490) at gsocket.c:3330
__PRETTY_FUNCTION__ = "g_socket_create_source"
#6 0x00000036b8474b9c in add_sources (listener=listener@entry=0x7f857c005270, callback=callback@entry=0x36b8474c40 <accept_ready>, callback_data=callback_data@entry=0x7f857c01ddf0, cancellable=cancellable@entry=0x7f858031e490, context=0x0) at gsocketlistener.c:519
socket = <optimized out>
source = <optimized out>
sources = 0x0
i = 0
#7 0x00000036b84755f6 in g_socket_listener_accept_socket_async (listener=listener@entry=0x7f857c005270, cancellable=0x7f858031e490, callback=callback@entry=0x36b8476490 <g_socket_service_ready>, user_data=user_data@entry=0x0) at gsocketlistener.c:747
task = 0x7f857c01ddf0
sources = <optimized out>
error = 0x0
#8 0x00000036b8475725 in g_socket_listener_accept_async (listener=listener@entry=0x7f857c005270, cancellable=<optimized out>, callback=callback@entry=0x36b8476490 <g_socket_service_ready>, user_data=user_data@entry=0x0) at gsocketlistener.c:805
No locals.
#9 0x00000036b8476424 in g_socket_service_changed (listener=0x7f857c005270) at gsocketservice.c:137
service = 0x7f857c005270
#10 0x00000036b8474f4d in g_socket_listener_add_socket (listener=listener@entry=0x7f857c005270, socket=socket@entry=0x12a33f0, source_object=source_object@entry=0x0, error=error@entry=0x7fff0920ede0) at gsocketlistener.c:245
No locals.
#11 0x00000036b84750b6 in g_socket_listener_add_address (listener=0x7f857c005270, address=address@entry=0x7f85640028e0, type=type@entry=G_SOCKET_TYPE_STREAM, protocol=protocol@entry=G_SOCKET_PROTOCOL_DEFAULT, source_object=source_object@entry=0x0, effective_address=effective_address@entry=0x0, error=error@entry=0x7fff0920ede0) at gsocketlistener.c:325
local_address = 0x0
family = <optimized out>
socket = 0x12a33f0
#12 0x00000036b84cd480 in try_unix (address_entry=<optimized out>, error=0x7fff0920ede0, key_value_pairs=<optimized out>, server=0x1199b30) at gdbusserver.c:721
ret = 0
tmpdir = 0x0
abstract = <optimized out>
path = <optimized out>
address = 0x7f85640028e0
#13 initable_init (initable=0x1199b30, cancellable=<optimized out>, error=0x7fff0920efb8) at gdbusserver.c:1073
address_entry = <optimized out>
key_value_pairs = 0x7f858033eaa0
transport_name = 0x1494550 "unix"
this_error = 0x0
server = 0x1199b30
ret = 0
n = 0
addr_array = <optimized out>
last_error = 0x0
__PRETTY_FUNCTION__ = "initable_init"
#14 0x00000036b845662a in g_initable_new_valist (object_type=<optimized out>, first_property_name=first_property_name@entry=0x36b84f11e2 "address", var_args=var_args@entry=0x7fff0920ee68, cancellable=cancellable@entry=0x0, error=error@entry=0x7fff0920efb8) at ginitable.c:231
obj = 0x1199b30
__PRETTY_FUNCTION__ = "g_initable_new_valist"
#15 0x00000036b845670c in g_initable_new (object_type=<optimized out>, cancellable=cancellable@entry=0x0, error=error@entry=0x7fff0920efb8, first_property_name=first_property_name@entry=0x36b84f11e2 "address") at ginitable.c:149
object = 0x6
var_args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fff0920ef70, reg_save_area = 0x7fff0920ee80}}
#16 0x00000036b84cdde5 in g_dbus_server_new_sync (address=address@entry=0x148e050 "unix:abstract=/dbus-vfs-daemon/socket-DVp4eOQs", flags=flags@entry=G_DBUS_SERVER_FLAGS_NONE, guid=guid@entry=0x1495230 "1bf129479c0c14dc2d6be4f651d52071", observer=observer@entry=0x0, cancellable=cancellable@entry=0x0, error=error@entry=0x7fff0920efb8) at gdbusserver.c:492
__PRETTY_FUNCTION__ = "g_dbus_server_new_sync"
#17 0x000000000040d500 in handle_get_connection (object=0x119b010, invocation=0x7f8548105920, user_data=<optimized out>) at gvfsdaemon.c:841
daemon = <optimized out>
server = <optimized out>
error = 0x0
address1 = 0x148e050 "unix:abstract=/dbus-vfs-daemon/socket-DVp4eOQs"
data = 0x148ff80
guid = 0x1495230 "1bf129479c0c14dc2d6be4f651d52071"
#18 0x00000036b0c05cfc in ffi_call_unix64 () at ../src/x86/unix64.S:76
No locals.
#19 0x00000036b0c0562c in ffi_call (cif=cif@entry=0x7fff0920f260, fn=0x40d3b0 <handle_get_connection>, rvalue=0x7fff0920f1d0, avalue=avalue@entry=0x7fff0920f170) at ../src/x86/ffi64.c:522
classes = {X86_64_INTEGER_CLASS, 32767, 153154144, 32767}
stack = 0x7fff0920efb0 "\020\260\031\001"
argp = 0x7fff0920f060 "\n"
arg_types = <optimized out>
gprcount = 3
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
ret_in_memory = <optimized out>
reg_args = 0x7fff0920efb0
#20 0x00000036b1010268 in g_cclosure_marshal_generic (closure=0x119ac80, return_gvalue=0x7fff0920f3b0, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=0x0) at gclosure.c:1454
rtype = <optimized out>
rvalue = 0x7fff0920f1d0
n_args = 3
atypes = <optimized out>
i = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 3, arg_types = 0x7fff0920f1a0, rtype = 0x36b0c06030 <ffi_type_sint32>, bytes = 0, flags = 10}
cc = 0x119ac80
enum_tmpval = <optimized out>
tmpval_used = 0
#21 0x00000036b100fa28 in g_closure_invoke (closure=0x119ac80, return_value=return_value@entry=0x7fff0920f3b0, n_param_values=2, param_values=param_values@entry=0x1494250, invocation_hint=invocation_hint@entry=0x7fff0920f400) at gclosure.c:777
marshal = 0x36b1010070 <g_cclosure_marshal_generic>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x119ac60
__PRETTY_FUNCTION__ = "g_closure_invoke"
#22 0x00000036b1020a3d in signal_emit_unlocked_R (node=node@entry=0x119a7f0, detail=detail@entry=0, instance=instance@entry=0x119b010, emission_return=emission_return@entry=0x7fff0920f520, instance_and_params=instance_and_params@entry=0x1494250) at gsignal.c:3584
tmp = <optimized out>
handler = 0x7f8580004b20
accumulator = 0x11951d0
emission = {next = 0x0, instance = 0x119b010, ihint = {signal_id = 6, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
handler_list = 0x7f8580004b20
return_accu = 0x7fff0920f3b0
accu = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 6
max_sequential_handler_number = 147485
return_value_altered = 0
#23 0x00000036b10278d1 in g_signal_emitv (instance_and_params=instance_and_params@entry=0x1494250, signal_id=signal_id@entry=6, detail=detail@entry=0, return_value=return_value@entry=0x7fff0920f520) at gsignal.c:3059
instance = 0x119b010
node = 0x119a7f0
__PRETTY_FUNCTION__ = "g_signal_emitv"
#24 0x00000036b601afb1 in _gvfs_dbus_daemon_skeleton_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x7f85802f8920 "org.gtk.vfs.Daemon", method_name=0x7f858008c080 "GetConnection", parameters=<optimized out>, invocation=0x7f8548105920, user_data=0x119b010) at gvfsdbus.c:1247
skeleton = <optimized out>
info = 0x36b6238c40 <_gvfs_dbus_daemon_method_info_get_connection>
iter = {x = {140210416884048, 0, 0, 0, 140209207377925, 3, 18482032, 3579507750, 1, 5, 0, 18460688, 0, 234889966209, 140211355435136, 234897962414}}
child = 0x0
paramv = 0x1494250
num_params = <optimized out>
num_extra = <optimized out>
n = <optimized out>
signal_id = 6
return_value = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
__PRETTY_FUNCTION__ = "_gvfs_dbus_daemon_skeleton_handle_method_call"
#25 0x00000036b84cf086 in g_dbus_interface_method_dispatch_helper (invocation=0x7f8548105920, method_call_func=0x36b601ae00 <_gvfs_dbus_daemon_skeleton_handle_method_call>, interface=0x119b010) at gdbusinterfaceskeleton.c:610
has_handlers = <optimized out>
emit_authorized_signal = <optimized out>
flags = <optimized out>
has_default_class_handler = <optimized out>
run_in_thread = <optimized out>
object = 0x0
#26 skeleton_intercept_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=<optimized out>, method_name=<optimized out>, parameters=<optimized out>, invocation=0x7f8548105920, user_data=0x119b010) at gdbusinterfaceskeleton.c:651
interface = 0x119b010
#27 0x00000036b84b7dd1 in call_in_idle_cb (user_data=0x7f8548105920) at gdbusconnection.c:4737
invocation = 0x7f8548105920
vtable = <optimized out>
registration_id = <optimized out>
subtree_registration_id = <optimized out>
__PRETTY_FUNCTION__ = "call_in_idle_cb"
#28 0x00000036b0847e06 in g_main_dispatch (context=0x118c4a0) at gmain.c:3054
dispatch = 0x36b0844e60 <g_idle_dispatch>
was_in_call = 0
user_data = 0x7f8548105920
callback = 0x36b84b7ce0 <call_in_idle_cb>
cb_funcs = 0x36b0b2a900 <g_source_callback_funcs>
cb_data = 0x7f85802c1ea0
need_destroy = <optimized out>
current_source_link = {data = 0x7f8580329650, next = 0x0}
source = 0x7f8580329650
current = 0x11949a0
i = 0
#29 g_main_context_dispatch (context=context@entry=0x118c4a0) at gmain.c:3630
No locals.
#30 0x00000036b0848158 in g_main_context_iterate (context=0x118c4a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3701
max_priority = 2147483647
timeout = 24977
some_ready = 1
nfds = <optimized out>
allocated_nfds = 3
fds = 0x1197380
#31 0x00000036b084855a in g_main_loop_run (loop=0x1197110) at gmain.c:3895
__PRETTY_FUNCTION__ = "g_main_loop_run"
#32 0x000000000040c9d1 in daemon_main (argc=argc@entry=4, argv=argv@entry=0x7fff0920f9a8, max_job_threads=max_job_threads@entry=1, default_type=default_type@entry=0x41c4e5 "smb-share", mountable_name=mountable_name@entry=0x0, first_type_name=first_type_name@entry=0x41c4e5 "smb-share") at daemon-main.c:395
var_args = {{gp_offset = 48, fp_offset = 54, overflow_arg_area = 0x7fff0920f8b0, reg_save_area = 0x7fff0920f830}}
type = 0x0
name_owner_id = 0
data = 0x1194fc0
#33 0x00000000004084f8 in main (argc=4, argv=0x7fff0920f9a8) at daemon-main-generic.c:42
No locals.
Version: git master