# HG changeset patch # User Waqas Hussain # Date 1271683750 -18000 # Node ID 686f9a5a7f5e03be4aa55d6545bda346e17ead5b # Parent 15c056c1d9ebbab93f06efdfb52879a2c59cc1d0 modulemanager: Log proper tracebacks on errors during module load/unload. diff -r 15c056c1d9eb -r 686f9a5a7f5e core/modulemanager.lua --- a/core/modulemanager.lua Mon Apr 19 18:28:12 2010 +0500 +++ b/core/modulemanager.lua Mon Apr 19 18:29:10 2010 +0500 @@ -19,7 +19,7 @@ local hosts = hosts; local prosody = prosody; -local loadfile, pcall = loadfile, pcall; +local loadfile, pcall, xpcall = loadfile, pcall, xpcall; local setmetatable, setfenv, getfenv = setmetatable, setfenv, getfenv; local pairs, ipairs = pairs, ipairs; local t_insert, t_concat = table.insert, table.concat; @@ -29,6 +29,14 @@ local error = error; local tostring, tonumber = tostring, tonumber; +local debug_traceback = debug.traceback; +local unpack, select = unpack, select; +pcall = function(f, ...) + local n = select("#", ...); + local params = {...}; + return xpcall(function() f(unpack(params, 1, n)) end, function(e) return tostring(e).."\n"..debug_traceback(); end); +end + local array, set = require "util.array", require "util.set"; local autoload_modules = {"presence", "message", "iq"};