Coldfusion Dump Issue on Imaginary Drive
This is a bit curious. I get an error that when I googled it, it seems to plague people with hosted environments where cfdump is turned off. However, this is one my own servers so this false-positive is more curious because it seems like it would otherwise fit the descriptions otherwise fitting these hosted environments.
Here is the error I get in ColdFusion 8 when I am re-initializing (or not, after testing it apparently doesn't matter if I am re-initializing or not) the application by passing in a URL parameter and calling a cfdump in the OnRequestStart event of an object that normally would only run during OnSessionStart (so I can see what is going on in my sessionManager ):
RAW_TRACE
at cfdump2ecfm831925840._factor4(E:\cf8_updates\cfusion\wwwroot\WEB-INF\cftags\dump.cfm
In addition to referencing a non-existant drive and non-existant folder (and server install of cfusion), there were a couple other things that threw me.
Message
Element TEMP is undefined in a CFML structure referenced as part of an expression.
and excption which is the argument passed into my OnError event... That is a bit strange eh?
The first thing I did was figure I had some place in an error try/catch passing in a misspelled argument. Nope.
Then I figured I must be referencing a non-scoped TEMP in my Onerror or in the fn_GeneralErrorHandler() which calls onError if it fails. Nope
I realize at this point it is the actual CFDUMP which is failing since it is in the CFTAGS directory. And that is when I realize the location it references does not exist.
I was also unable to locate a cf8_updates folder on any drive let alone the E:\ drive... which is what looked even curiouser to me. The path it references looks more like when CF8 is running on a multi-server Jrun install (note the cfusion folder which would correspond to the default cfusion instance when installed like that.
Anyway, long story short, yes, java objects ARE allowed in this environment, there is NO E:\ drive present; this does appear to be a spurious error, and it only occurs when CFDUMP-ing AND re-initializing the application at the same time. If I don't reinit the whole app it works as expected. I can also get output from the Session manager "SESSION MANAGER CFC" draws to the screen just fine. However, the session scope it is supposed to be constructing is not being constructed. So I am rather sure the object is not working quite right, but this cfdump issue is still pretty strange, don't you think?
Here is a portion of the dumped error. Below this, I have included what appears to be a nicely compiled SessionManager object including its injected methods. Below that, I have a bit of a blog betwixt Sean Corfield and Andrew Rankin describing what appears to be identical results but on a hosted environment purportedly with Java object (and thus dumps) turned off...
application.onError LOCALHOST - struct
ARGUMENTS
application.onError LOCALHOST - struct
B_SENDDUMP
true
B_TRACEON
true
SZ_EMAILSUBJECT
[undefined struct element]
SZ_ERRORLOCATION
[undefined struct element]
SZ_ERRORMESSAGE
[undefined struct element]
SZ_ERRORMESSAGEDETAIL
[undefined struct element]
SZ_ERRORMETHOD
[undefined struct element]
U_ERRORCATCH
[undefined struct element]
excption
application.onError LOCALHOST - struct
Detail
[empty string]
ErrNumber
0
Message
Element TEMP is undefined in a CFML structure referenced as part of an expression.
Resolvedname
[empty string]
StackTrace
TagContext
application.onError LOCALHOST - array
1
application.onError LOCALHOST - struct
COLUMN
0
ID
CFDUMP
LINE
-1
RAW_TRACE
at cfdump2ecfm831925840._factor1(E:\cf8_updates\cfusion\wwwroot\WEB-INF\cftags\dump.cfm)
TEMPLATE
E
TYPE
CFML
2
application.onError LOCALHOST - struct
3
application.onError LOCALHOST - struct
4
application.onError LOCALHOST - struct
COLUMN
0
ID
CFINCLUDE
LINE
198
RAW_TRACE
at cfapplication2ecfc1865294849$funcONREQUESTSTART.runFunction(C:\inetpub\wwwroot\myLocalHost\application.cfc:198)
TEMPLATE
C:\inetpub\wwwroot\myLocalhost\application.cfc
TYPE
CFML
Type
Expression
element
TEMP
objectType
application.onError LOCALHOST - object of java.lang.Class
CachedSince:{ts '2024-11-21 00:24:34'}
Dump Value - component code.application.application_sessionmanager
METHODS
FN_LOADPRICINGINTOSESSION
Dump Value - function fn_LoadPricingIntoSession
Arguments:
Name
Required
Type
Default
b_TraceOn
Optional
any
false
b_SendDump
Optional
any
false
ReturnType:
any
Roles:
Access:
public
Output:
false
DisplayName:
Hint:
Loads a product price structure into a session structure. It is expected the inbound args names match the predefined session structure names
Description:
FN_MANAGECOOKIEVALUES
Dump Value - function fn_ManageCookieValues
Arguments:
Name
Required
Type
Default
b_TraceOn
Optional
any
false
b_SendDump
Optional
any
false
ReturnType:
any
Roles:
Access:
public
Output:
false
DisplayName:
Hint:
Description:
FN_GETCURRENTUSERDATA
Dump Value - function fn_GetCurrentUserData
Arguments:
Name
Required
Type
Default
n_UserID
Optional
numeric
sz_UserName
Optional
string
b_SendDump
Optional
boolean
false
b_TraceOn
Optional
boolean
false
ReturnType:
struct
Roles:
Access:
public
Output:
true
DisplayName:
Hint:
This is the rough equivalent of the traditional whoAmI object which returns info on the current logged in user. Don't get this confused with a regular DAO View. This is not meant to be that. It takes no arguments as it reads the logged in values from the system and compiles the rest from that. I've abstracted it out here because I don't like how the old code gets/sets/stores some of this info. so if we start using this now, we can buffer the storage/retrieval and just talk to this object all the time without recoding -WBQ
Description:
DUMP
TRANSACTION
DECRYPTCC
EXIT
FLUSH
ENCRYPTSSN
RELOCATE
ABORT
FN_VALIDATETRACKINGVALUES
Dump Value - function fn_ValidateTrackingValues
Arguments:
Name
Required
Type
Default
b_TraceOn
Optional
any
false
b_SendDump
Optional
any
false
ReturnType:
any
Roles:
Access:
public
Output:
false
DisplayName:
Hint:
Description:
FN_QUERYOFQUERY
TRACE
ONERROR
FN_GETAFFILIATEPRICING
Dump Value - function fn_GetAffiliatePricing
Arguments:
Name
Required
Type
Default
n_AFID
Optional
any
[runtime expression]
n_PromoID
Optional
any
[runtime expression]
b_TraceOn
Optional
any
false
b_SendDump
Optional
any
false
ReturnType:
any
Roles:
Access:
public
Output:
false
DisplayName:
Hint:
Retrieves pricing for a signup against an associated AFID as well as checks any promo codes
Description:
THROW
FN_LOADTRACKINGVALUES
Dump Value - function fn_LoadTrackingValues
Arguments:
Name
Required
Type
Default
b_TraceOn
Optional
any
false
b_SendDump
Optional
any
false
ReturnType:
any
Roles:
Access:
public
Output:
false
DisplayName:
Hint:
Description:
DECRYPTSSN
FN_INJECTMETHODS
Dump Value - function fn_InjectMethods
Arguments:
none
ReturnType:
any
Roles:
Access:
public
Output:
DisplayName:
Hint:
This returns the local methods of this cfc so they can be appended.
Abstracted out so this can be more selective about how/what it appends in future maybe. For instance, fn_InjectMethods does not need to be appended to all objects...
Description:
INIT
Dump Value - function init
Arguments:
Name
Required
Type
Default
b_TraceOn
Optional
any
false
b_SendDump
Optional