PFC uses the Oracle reserved word "user" as a retrieval argument in d_pfcsecurity_controllist datawindow.
The workaround is to change the the retrieval argument name in the d_pfcsecurity_controllist datawindow.
PFC Scanner uses an interesting technique to determine the list of controls on a window. All the application PBLs are added to the scanner library path by using the SetLibraryList() function. Next the window is brought into memory by using the Create statement, at which point the control array of the window is examined to determine the list of controls on a window. This method is very quick, but there is a catch. PFC security scanner must be created as a single exe, without any PBDs or DLLs. The most common reason for the error message above is trying to use the scanner compiled to PBDs.
As mentioned in the issue above the security scanner operates by appending the application PBLs to the library list and creating the object to be scanned. In the development environment when the object is opened PowerBuilder will detect if any ancestor or other related objects are out of synch and will regenerate them as needed. That is not true in the executable. In that case PowerBuilder expects all the objects to have been rebuilt and synchronized during the executable creation process. Therefore when using the security scanner it is important to perform a full or incremental rebuild immediately prior to scanning the application.
In all versions prior to 5.0.03 the Security Scanner application was itself based on PFC. When the pre - 5.0.03 scanner is compiled the exe will contain all the PFC objects. If you modify any PFE object in your application the scanner will not see these changes, but instead will find the same object in it's exe first. As an example of this problems let's see what happens if you extend m_master and add a new menu item - m_action. The scanner was compiled with the original m_master and will see it first, therefore it will not be aware of this new menu item. When the scanner attempts to scan a descendant of m_master let's say m_app_frame which disables the m_action the most probable result is a GPF. If the m_action is not modified in the descendant the scanner may miss the menu item.
This issue is fixed in version 5.0.03. The scanner application is no longer based on PFC. I typically avoid posting the bug fixes to the FAQ page, but in this case there is still a slight possibility of the same issue coming up again. You have to make sure that your application does not contain any objects with the same names as the objects in the scanner application. Here is a list of the scanner objects:
d_pfcsecurity_windowlist
d_pfcsecurity_pb_ini_applications
d_pfcsecurity_applokup
d_pfcsecurity_controllist
d_pfcsecurity_grouplookup
d_pfcsecurity_groupverify
d_pfcsecurity_templateupdate
d_pfcsecurity_userlookup
pfcsecurity_scanner
pfcscanner_n_cst_security
pfcscanner_n_cst_string
pfcscanner_n_ds
pfcscanner_u_dw
w_pfc_securityapplist
w_pfc_securitywindowlist
The PFC Security scanner uses SetLibraryList() function to append the application PBLs to the library path. It seems that SetLibraryList() is not 100 % compatible with the machine-code EXE applications. Due to this limitation it is recommended that you compile the Scanner to a p-code exe. There is very little difference in the Scanner performance between p-code and m-code EXE.
The PB deployment DLLs should be in the scanner exe path. Check the system path of the registry path entry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\App Paths
for pfcsecsc.exe
Contributed by Sharon Buntz
Here is a checklist to assist you in eliminating a GPF that happens when you attempt to scan your application:
The 5.0.03 scanner is a stand-alone application, and it is no longer based on the PFC
You can use the 5.0.03 scanner source code while using PFC/PB 5.0.02 for your application (as long as you run a full rebuild on the scanner code using PB 5.0.02 also - See #3 below)
This is required; if you do not build the scanner's EXE as one big EXE, it will not work
To do so, run a full rebuild on both the scanner and your application, using the same PowerBuilder version, with the same release version as well
This will make sure that everything is freshly regenerated, and regeneration problems are the most common problems which cause GPFs
Contributed by PFCGuide staff, except
where noted otherwise.
PFCGuide is sponsored by Dynamic Technology Group
The information provided is for advice only and not to be considered a contract or a
liability against Dynamic Technology Group.
Last revised: February 15, 2004 03:58 AM.