We have a coldfusion project on a live server, and the same project on a local development server. Both projects are nearly identical but a few components under development on the dev server. Both servers have the same coldfusion version (cf9).
Suddenly I get a "variable is undefined" error in a component on the live project. This component is exactly the same on the dev project. However the dev project does not throw this error when the exact same code is executed as on the live project.
private void function updateRecordById(required struct properties) {
_updateRecord(arguments.properties, aliasFrom(this.name & "_id")&" = "&
arguments.properties.id);
}
public string function aliasFrom(required string column) {
var matchingKey = structFindValue(variables.aliases,arguments.column,"ONE");
return (arraylen(matchingKey)) ? matchingKey[1].key : arguments.column;
}
The error was "Variable aliasFrom is undefined" (line nr was second line in code sample above). After simply recompiling the component on the live server (by adding writeDump("test");) and restarting the application, the error was fixed.
It looks like the live server compiled updateRecordById(), but didn't compile aliasFrom().
What could have caused this error?
How can I prevent this from happening again?
Why the heck don't I have this error on the dev server in exactly the same code?
more info:
This project uses coldspring to load the components once at applicationStart. The live server has 'cache template in request', 'component cache' and 'save class files' enabled. Simply restarting the application doesn't solve the problem. The component has te be recompiled.
It is possible that ColdFusion was serving a cached version of the cfc that wasn't identical. Do you have save compiled componenets enabled on the server?
Related
I am currently trying to upgrade our c++ mfc solution from visual studio 2010 to a visual studio 2013 solution. When i try to build it i get the error MSB4018 The "ResolveComReference" task failed unexpectedly. I enabled fusion logging and this is what it tells me:
=== Pre-bind state information ===
LOG: DisplayName = System
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: System | Domain ID: 1
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/Program Files (x86)/MSBuild/12.0/bin/
LOG: Initial PrivatePath = NULL
Calling assembly : Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files (x86)\MSBuild\12.0\bin\MSBuild.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/12.0/bin/System.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/12.0/bin/System/System.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/12.0/bin/System.EXE.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/12.0/bin/System/System.EXE.
I understand that msbuild has been moved, but i dont understand why it is trying to find System.dll in the msbuild path, how can i make it look for it in its proper location?
Edit:
I have now also tried upgrading to visual studio 2012 which worked without bigger problems and I did not run into the same problem. However i noticed that when running devenv /upgrade (with vs2013) it seems to completely change everything under vc++ directories (it stayed unchanged when upgrading to vs2012). Could this have something to do with this issue?
Edit2:
Tried to build the project in vs2013 after upgrading it to 2012 (without running devenv /upgrade), this also didnt work so I guess the problem is not related to that...
After enabling diagonostic build output i found that it was 3 broken COM references in the project that where failing to load. Removing these references solved the building issue. These where only showing up as warnings in vs2010 but resulted in MSB4018 in vs 2013 for some reason.
This is your problem:
LOG: Appbase = file:///C:/Program Files (x86)/MSBuild/12.0/bin/
Fix the base folder in your build system if you really need it to point to another filder. However it would probably be better to redo you build system targeting 2013 instead of patching the 2010 version.
I have started getting the following all of a sudden and am not able to build and deploy my application all of a sudden.. Not able to figure out what caused this to start happening.
Error:
[2013-08-13 12:21:41]FWLST1040E: common build failed: Failed to update main HTML file 'C:\Users\ajay\AppData\Local\Temp\worklightBuildcommon8499642247565272374\preview\default\myapp.html'
[2013-08-13 12:21:41] Application 'mypp' with all environments build finished.
[2013-08-13 12:21:41] FWLST1035I: No environments to build.
The build and deploy is not working and I am not able to update the app in the simulator.. Has any one else faced this before?
#idan thanks for the answer. There is no /worklightBuildcommon* folder in temp.
But I found the problem.. It was a malformed HTML that was causing this error.. the HTML validator that runs never caught it - the fact that its giving a build error was misleading me to believe its a build time problem v/s bad html..
I cracked it by creating a new dummy app in the same project and just replacing the artifacts one at a time.. started with tht html first and hit the jackpot!
Navigate to C:\Users\ajay\AppData\Local\Temp\
delete the folder worklightBuildcommon8499642247565272374
I am busy converting by existing firebreath plugin here to use gpgme instead of making calls via the OS and the gpg binary.
I have managed to get the code to compile in windows using VS 2010 on a x32 system but after loading the plugin into chrome I can not access the npapi code at all. Even simple version calls fails.
When loading the plugin I get no visible errors but when using sawbuck log viewer for chrome I get the erorr messages below.
.\renderer\webplugin_delegate_proxy.cc 347 PluginMsg_Init returned false
..\plugins\npapi\webplugin_impl.cc 271 Couldn't initialize plug-in
I have tried to use my code with both firebreath 1.4 and 1.6 and neither versions work. After some simple debugging it seems that using any code provided by gpgme (whether its called or not) causes the plugin to break.
I came to this conclusion by doing the following.
Created a new project with firebreath (versions 1.4 and 1.6)
Add the gpgme.h headers to gmailGPGAPI.cpp and changed nothing else aside from adding the required reference paths to the project.
Build the project to create the dll (this generates the dll fine).
Replace the existing ddl in my project with the dll in step 2 and test it with the following piece of code
plugin = document.createElement('object'); plugin.id = 'plugin';
plugin.type = 'application/x-gmailtest';
document.body.appendChild(plugin);
console.log("my plugin returned: "+ plugin.valid);
console.log("my plugin returned: " + plugin.version);
This returns valid = true and the version returns what ever i set it to.
I then modified gmailGPGAPI.cpp to now return the gpg version by calling gpgme_check_version(NULL) in the version method. I used that method because its probably the simplest returning function that I could test with.
Build the plugin and copy dll to chrome extension as in step 3-4. The plugin builds fine again as expected.
Load the plugin and try to execute the code in step 4 at which point it now just returns undefined for any property or method i try to access on the plugin. No errors are printed to the console or anywhere else in chrome except for the error logged to sawbuck.
I have got no idea where to look or what to try since I cant seem to get an actionable error to work against. I have also reduced by test code to the point where its just a new project with a one line change to make it easier to find the problem.
I should note the code in the repo builds fine in linux/OSX and loads into chrome correctly so I know at some level my code does work.
Two possible paths:
You may have a DLL dependency that isn't available which keeps the plugin from loading; if you run regsvr32 on it in the state where it doesn't work on chrome, does it work?
Your plugin may be loading and then crashing. Start chrome with --plugin-startup-dialog and then when it pops up a dialog warning you that a plugin is about to be loaded attach to that process and see if the process crashes. At this point you can also set breakpoints to try to figure out how far it gets.
Double check your metadata in PluginConfig.cmake as well; sometimes unusual characters in some fields can cause issues like this.
I finally solved my problem:
I had been using a lib of mysql that was not compiled with the same settings as the VS10 project. Doing this solved my issue
This was my issue
I am having some trouble, and i was wondering if anyone could give me a push in the wright direction.
I am trying to connect to a local Mysql database, using c++ in VS 2010.
On phpmyadmin i can see that an attempt to connect is made but doesn't succeed.
When building the application, i get some errors.
The first where char* errors. I solved that by changing from unicode to multi byte.
The most important error, i think, is this one:
warning C4700: uninitialized local variable 'sqlstatementhandle' used.
After the application crashes i get this in visual studio:
Run-Time Check Failure #3 - The variable 'sqlstatementhandle' is being used without being initialized.
In the console i get this:
Connecting to SQL...
Connect() - SQL_ERROR
Message: [Microsoft][ODBC SQL Server Driver]Fout in het dialoogvenster
SQLSTATE: IM008
In the documentation i found that error code 008 refers to:
Dialog failed
SQLDriverConnect
But i don't really now how this can help? Is the driver not able to connect, or is the driver not loaded at all? As I told earlyer, i can see in phpmyadmin that there are failed attempts to connect.
my setup: visual studio 2010 and a mysql server administrated true Xampp. A 64bit windows 7 machine.
In connection string, Driver shows "Sql Server". Perhaps Connection String is problem. Try to change it. This site will help you.
http://www.connectionstrings.com/mysql#p31
I'm developing extension for Firefox which calls XPCOM component writen in C++ and I get this error:
[Exception... "Component returned failure code: 0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame ::
chrome://testtest/content/mytest.js :: loadTestPage :: line 128" data: no]
When I try to execute this code from java script:
cid = '#myCompany.com/MyComponent;1';
obj = Components.classes[cid].getService(Components.interfaces.IMyComponent);
Does anybody know what this error code means?
This error occures only on few machines running Vista (both x86 and x64) running FF 3.5.2 (32-bits official build, even after FF is reinstalled and new profiles are created), on other platforms it is working. XPCOM component is compiled with Visual C++ 2008 (sp1).
I tried to delete compreg.dat and xpti.dat and it doesn't work, I also tried to create new profile and then install extension again but still I get the same error.
I know for a fact that Firefox successfully loads my XPCOM component and that component is working, because I can access and use it from another component written in javascript.
Evaluating from error console also works.
Expression:
Components.classes['#myCompany.com/MyComponent;1'].getService(
Components.interfaces.IMyComponent);
returns:
[xpconnect wrapped IMyComponent]
Thanks!
It's also possible that you're trying to call .getService while you're still in the middle of component registration. You should not try to create any external components during registration, because they may not be registered or completely available yet.
The error means that your component threw during the getService call.