Problems calling virtual functions
Hi,
We have code running in a shared library that appears to be incorrectly changing registers that contain function parameters before the called (virtual) function acceses the registers containing its parameters.
Has anyone seen a similar problem ? If so does
anyone knaw what the solution is ?
Compiler:
SunAMD:tbucken@win64bld 247>>> CC -V
CC: Sun C++ 5.7 2005/01/07
SunAMD:tbucken@win64bld 248>>> uname -a
SunOS win64bld 5.10 Generic i86pc i386 i86pc
solaris is running on an HP DL585 (4 cpu's)
calling function code (We are setting up a vitual function call):
tempdatabase->CostModel->GetCompareSelectivity
(_lhs_base, rhsbase, rhsconverted, op, &sel_est,
&_value_distrib );
/ Line 922
movq -144(%rbp), %r8
movq 352(%r8), %r8
movq 0(%r8), %r14
movq -144(%rbp), %r13
movq -8(%rbp), %r12
movq -8(%rbp), %r11
movq -8(%rbp), %r10
movq -8(%rbp), %r8
movzbl 120(%r8), %eax
movq -8(%rbp), %r9
movq -8(%rbp), %r8
leaq 192(%r8), %r8
movq %r8, 0(%rsp)
leaq 40(%r9), %r9
movl %eax, %r8d
movq 168(%r10), %rcx
movq 152(%r11), %rdx
movq 144(%r12), %rsi
movq 352(%r13), %rdi
movq 48(%r14), %r10
movl $0, %eax
call *%r10
the function called:
p_expr is a pointer:
a_relation is an unsigned char
The last 2 arguments are pointers.
void CostModel::GetCompareSelectivity(
p_expr colexpr,
p_expr expr2,
p_expr expr2_converted,
a_relation reln,
SelectivityEstimate *est,
IHistogram **hist )
My uderstading of register usage during a function call on opteron (from
http://www.x86-64.org/documentation/abi-0.96.pdf)
%rdi - first argument - this pointer
%rsi - second argument - colexpr
%rdx - third argument - expr2
%rcx - fourth argument - expr2_converted
%r8 - fifth argument - reln
%r9 - sixth argument - est
%rcx and %r8 are being setup correctly by the calling function but they are changed by the code that is executed by the call psudo-op that
calculates that virtual function address.
setting up the function call
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at line 922 in file "dfp_compares.cpp"
922 tempdatabase->CostModel->GetCompareSelectivity
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcbd
0xfffffd7ffe85dcbd: ComputeSelectivity+0x038d: movq 0x0000000000000160(%r8),%r8
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcc4
0xfffffd7ffe85dcc4: ComputeSelectivity+0x0394: movq 0x0000000000000000(%r8),%r14
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcc8
0xfffffd7ffe85dcc8: ComputeSelectivity+0x0398: movq 0xffffffffffffff70(%rbp),%r13
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dccf
0xfffffd7ffe85dccf: ComputeSelectivity+0x039f: movq 0xfffffffffffffff8(%rbp),%r12
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcd3
0xfffffd7ffe85dcd3: ComputeSelectivity+0x03a3: movq 0xfffffffffffffff8(%rbp),%r11
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcd7
0xfffffd7ffe85dcd7: ComputeSelectivity+0x03a7: movq 0xfffffffffffffff8(%rbp),%r10
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcdb
0xfffffd7ffe85dcdb: ComputeSelectivity+0x03ab: movq 0xfffffffffffffff8(%rbp),%r8
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcdf
0xfffffd7ffe85dcdf: ComputeSelectivity+0x03af: movzbl 0x0000000000000078(%r8),%eax
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dce4
0xfffffd7ffe85dce4: ComputeSelectivity+0x03b4: movq 0xfffffffffffffff8(%rbp),%r9
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dce8
0xfffffd7ffe85dce8: ComputeSelectivity+0x03b8: movq 0xfffffffffffffff8(%rbp),%r8
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcec
0xfffffd7ffe85dcec: ComputeSelectivity+0x03bc: leaq 0x00000000000000c0(%r8),%r8
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcf3
0xfffffd7ffe85dcf3: ComputeSelectivity+0x03c3: movq %r8,0x0000000000000000(%rsp)
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcf8
0xfffffd7ffe85dcf8: ComputeSelectivity+0x03c8: leaq 0x0000000000000028(%r9),%r9
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcfc
0xfffffd7ffe85dcfc: ComputeSelectivity+0x03cc: movl %eax,%r8d
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dcff
0xfffffd7ffe85dcff: ComputeSelectivity+0x03cf: movq 0x00000000000000a8(%r10),%rcx
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd06
0xfffffd7ffe85dd06: ComputeSelectivity+0x03d6: movq 0x0000000000000098(%r11),%rdx
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd0d
0xfffffd7ffe85dd0d: ComputeSelectivity+0x03dd: movq 0x0000000000000090(%r12),%rsi
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd15
0xfffffd7ffe85dd15: ComputeSelectivity+0x03e5: movq 0x0000000000000160(%r13),%rdi
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd1c
0xfffffd7ffe85dd1c: ComputeSelectivity+0x03ec: movq 0x0000000000000030(%r14),%r10
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd20
0xfffffd7ffe85dd20: ComputeSelectivity+0x03f0: movl $0x0000000000000000,%eax
t@7 stepi
t@7 (l@7) stopped in dfp_Compares::ComputeSelectivity at 0xfffffd7ffe85dd25
0xfffffd7ffe85dd25: ComputeSelectivity+0x03f5: call *%r10d
t@7 regs
current frame: [1]
r15 0x0000000000000000
r14 0xfffffd7ffee61d60
r13 0xfffffd7fed3f3890
r12 0xfffffd7fed4573c0
r11 0xfffffd7fed4573c0
r10 0xfffffd7ffeaa3b20
r9 0xfffffd7fed4573e8
r8 0x0000000000000002
rdi 0xfffffd7fed3ff1a8
rsi 0x0000000000000000
rbp 0xfffffd7ffdbfa730
rbx 0xfffffd7ffdee1400
rdx 0x0000000000000000
rcx 0x0000000000000000
rax 0x0000000000000000
trapno 0x0000000000000001
err 0x0000000000000000
rip 0xfffffd7ffe85dd25:ComputeSelectivity+0x3f5 call *%r10d
cs 0x000000000000004b
eflags 0x0000000000000286
rsp 0xfffffd7ffdbfa600
ss 0x0000000000000043
fs 0x00000000000001bb
gs 0x0000000000000000
es 0x0000000000000000
ds 0x0000000000000000
fsbase 0xfffffd7ffdee1400
gsbase 0xffffffff80000000
t@7
%rcx contains 0 which is the correct value for expr2_converted
%r8 contains 2 which is the correct value for reln
step through the code generated by the call psudo-op
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b20
0xfffffd7ffeaa3b20: __SLIP.THUNK__E : pushq %rbp
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b21
0xfffffd7ffeaa3b21: __SLIP.THUNK__E+0x0001: movq %rsp,%rbp
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b24
0xfffffd7ffeaa3b24: __SLIP.THUNK__E+0x0004: subq $0x0000000000000010,%rsp
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b28
0xfffffd7ffeaa3b28: __SLIP.THUNK__E+0x0008: movq %rdi,0xfffffffffffffff8(%rbp)
t@7 stepi
%r8 is changed here:
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b2c
0xfffffd7ffeaa3b2c: __SLIP.THUNK__E+0x000c: movq 0xfffffffffffffff8(%rbp),%r8
t@7 p -fx $r8
dbx: warning: The format '0x%x' is not suitable for type long long, will use 'llx' instead
$r8 = 0x2
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b30
0xfffffd7ffeaa3b30: __SLIP.THUNK__E+0x0010: leaq 0xfffffffffffffff8(%r8),%r8
t@7 p -fx $r8
dbx: warning: The format '0x%x' is not suitable for type long long, will use 'llx' instead
$r8 = 0xfffffd7fed3ff1a8
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b34
0xfffffd7ffeaa3b34: __SLIP.THUNK__E+0x0014: movq %r8,0xfffffffffffffff8(%rbp)
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b38
0xfffffd7ffeaa3b38: __SLIP.THUNK__E+0x0018: movq 0xfffffffffffffff8(%rbp),%rdi
t@7 stepi
%rcx is chaged here:
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b3c
0xfffffd7ffeaa3b3c: __SLIP.THUNK__E+0x001c: movq 0x000000000035d08d [ 0x35d08d ],%rcx
t@7 p -fx $rcx
dbx: warning: The format '0x%x' is not suitable for type long long, will use 'llx' instead
$rcx = 0x0
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b43
0xfffffd7ffeaa3b43: __SLIP.THUNK__E+0x0023: leave
t@7 p -fx $rcx
dbx: warning: The format '0x%x' is not suitable for type long long, will use 'llx' instead
$rcx = 0xfffffd7ffeaa8aa0
t@7 stepi
t@7 (l@7) stopped in __SLIP.THUNK__E at 0xfffffd7ffeaa3b44
0xfffffd7ffeaa3b44: __SLIP.THUNK__E+0x0024: jmp *%ecx
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8aa0
0xfffffd7ffeaa8aa0: GetCompareSelectivity : pushq %rbp
t@7 regs
current thread: t@7
current frame: [1]
r15 0x0000000000000000
r14 0xfffffd7ffee61d60
r13 0xfffffd7fed3f3890
r12 0xfffffd7fed4573c0
r11 0xfffffd7fed4573c0
r10 0xfffffd7ffeaa3b20
r9 0xfffffd7fed4573e8
r8 0xfffffd7fed3ff1a0
rdi 0xfffffd7fed3ff1a0
rsi 0x0000000000000000
rbp 0xfffffd7ffdbfa730
rbx 0xfffffd7ffdee1400
rdx 0x0000000000000000
rcx 0xfffffd7ffeaa8aa0
rax 0x0000000000000000
trapno 0x0000000000000001
err 0x0000000000000000
rip 0xfffffd7ffeaa8aa0:GetCompareSelectivity pushq %rbp
cs 0x000000000000004b
eflags 0x0000000000000282
rsp 0xfffffd7ffdbfa5f8
ss 0x0000000000000043
fs 0x00000000000001bb
gs 0x0000000000000000
es 0x0000000000000000
ds 0x0000000000000000
fsbase 0xfffffd7ffdee1400
gsbase 0xffffffff80000000
step through the function prolog:
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8aa1
0xfffffd7ffeaa8aa1: GetCompareSelectivity+0x0001: movq %rsp,%rbp
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8aa4
0xfffffd7ffeaa8aa4: GetCompareSelectivity+0x0004: subq $0x0000000000000190,%rsp
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8aab
0xfffffd7ffeaa8aab: GetCompareSelectivity+0x000b: movq %rbx,0xfffffffffffffea8(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ab2
0xfffffd7ffeaa8ab2: GetCompareSelectivity+0x0012: movq %r12,0xfffffffffffffea0(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ab9
0xfffffd7ffeaa8ab9: GetCompareSelectivity+0x0019: movq %r13,0xfffffffffffffe98(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ac0
0xfffffd7ffeaa8ac0: GetCompareSelectivity+0x0020: movq %r14,0xfffffffffffffe90(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ac7
0xfffffd7ffeaa8ac7: GetCompareSelectivity+0x0027: movq %r15,0xfffffffffffffe88(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ace
0xfffffd7ffeaa8ace: GetCompareSelectivity+0x002e: movq %rdi,0xfffffffffffffff8(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ad2
0xfffffd7ffeaa8ad2: GetCompareSelectivity+0x0032: movq %rsi,0xfffffffffffffff0(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ad6
0xfffffd7ffeaa8ad6: GetCompareSelectivity+0x0036: movq %rdx,0xffffffffffffffe8(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ada
0xfffffd7ffeaa8ada: GetCompareSelectivity+0x003a: movq %rcx,0xffffffffffffffe0(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ade
0xfffffd7ffeaa8ade: GetCompareSelectivity+0x003e: movl %r8d,0xffffffffffffffdc(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ae2
0xfffffd7ffeaa8ae2: GetCompareSelectivity+0x0042: movq %r9,0xffffffffffffffd0(%rbp)
t@7 stepi
t@7 (l@7) stopped in CostModel::GetCompareSelectivity at 0xfffffd7ffeaa8ae6
0xfffffd7ffeaa8ae6: GetCompareSelectivity+0x0046: movl $0x0000000000000000,0xfffffffffffffeb0(%rbp)
check the values of expr2_converted and reln
t@7 p expr2_converted
expr2_converted = 0xfffffd7ffeaa8aa0
t@7 p reln
reln = ' '
t@7 p -fx reln
reln = 0xa0
and both values are incorrect because the values in registers %rcx and %r8
have changed.sus
Tom
The original release of Sun Studio 10 had problems with saving and restoring registers in some cases on AMD64. Please visit the Sun Studio patch page at
http://developers.sun.com/prodtech/cc/downloads/patches/index.html
Download the current patches for
C++ Compiler
x86 compiler backend
C++ shared library patch for your Solaris version.
Similar Messages
-
Application Class Loader problem calling virtual function
Hello everyone
I have run in to very strange behavior of JVM
I have created a class loader which allows my to load classes from
jar file, regardless that URLClassLoader supplies this functionality.
I am using this class loader to load some classes and call their virtual functions. The class diagram looks like that:
public interface I {
public void init();
public class AAA implements
public void init(){
public class BBB extends AAA{
public void init(){
//here comes implementation
}Interface I and class AAA are loaded with System Class loader and Class BBB is loaded using my class loader from jar file.
ByteStreamClassLoader classLoader = new ByteStreamClassLoader ();
Class cl = classLoader. loadClass(�com.product.BBB�,true);
I myInterface = cl.newInstance();
myInterface.init();The problem is that from some unknown reason java class AAA.init() instead of BBB.init().
Can somebody help me what am I doing wrong?
Class Loader code attached below
public class ByteStreamClassLoader extends ClassLoader {
protected HashMap m_cache = new HashMap();
public void clearCashe() {
m_cache = new HashMap();
private String definePackage(String className) {
StringBuilder strB = new StringBuilder();
//Class name must be removed from the URI in order to define a package
String[] packageArray = className.split("\\.");
for (int i = 0; i < packageArray.length - 1; i++) {
strB.append(packageArray).append(".");
String packageName = strB.toString();
packageName = packageName.substring(0, packageName.length() - 1);
if (getPackage(packageName) == null) {
m_logger.log(Level.FINEST, "Defining package '" + packageName + "'");
definePackage(packageName, null, null, null, null, null, null, null);
return packageName;
public synchronized Class loadClass(String name, boolean resolve) throws
ClassNotFoundException {
name = name.replaceAll("/", ".").replaceAll(".class", "");
//Try to locate the Class in cashe
Class c = (Class) m_cache.get(name);
//Try to locate the Class in the System Class Loader
if (c == null) {
try {
c = ClassLoader.getSystemClassLoader().loadClass(name);
catch (Exception ex) {}
else {
m_logger.log(Level.FINEST, "Class '" + name + "' found in cache");
//Load the class from byte array
if (c == null) {
String resourceName = name;
if (!resourceName.endsWith(".class")) {
resourceName = resourceName.concat(".class");
//Retrieve class byte representation
if (resourceName.indexOf(".") != -1) {
resourceName =
resourceName.replaceAll("\\.", "/").replaceAll("/class", ".class");
//Use the ByteStreamClassLoader to load the class from byte array
byte[] classByteArray = null;
try {
classByteArray = getResourceBytes(resourceName);
catch (IOException ex1) {
throw new ClassNotFoundException(
"Could not load class data." + ex1.getMessage());
m_logger.log(
Level.FINEST, "Loading class '" +
name + "' Byte Length: " + classByteArray.length);
String p = definePackage(name);
c = defineClass(
name,
classByteArray,
0,
classByteArray.length,
ByteStreamClassLoader.class.getProtectionDomain());
m_cache.put(name, c);
if (resolve) {
resolveClass(c);
return c;Hello everyone
I have run in to very strange behavior of JVM
I have created a class loader which allows my to load classes from
jar file, regardless that URLClassLoader supplies this functionality.
I am using this class loader to load some classes and call their virtual functions. The class diagram looks like that:
public interface I {
public void init();
public class AAA implements
public void init(){
public class BBB extends AAA{
public void init(){
//here comes implementation
}Interface I and class AAA are loaded with System Class loader and Class BBB is loaded using my class loader from jar file.
ByteStreamClassLoader classLoader = new ByteStreamClassLoader ();
Class cl = classLoader. loadClass(�com.product.BBB�,true);
I myInterface = cl.newInstance();
myInterface.init();The problem is that from some unknown reason java class AAA.init() instead of BBB.init().
Can somebody help me what am I doing wrong?
Class Loader code attached below
public class ByteStreamClassLoader extends ClassLoader {
protected HashMap m_cache = new HashMap();
public void clearCashe() {
m_cache = new HashMap();
private String definePackage(String className) {
StringBuilder strB = new StringBuilder();
//Class name must be removed from the URI in order to define a package
String[] packageArray = className.split("\\.");
for (int i = 0; i < packageArray.length - 1; i++) {
strB.append(packageArray).append(".");
String packageName = strB.toString();
packageName = packageName.substring(0, packageName.length() - 1);
if (getPackage(packageName) == null) {
m_logger.log(Level.FINEST, "Defining package '" + packageName + "'");
definePackage(packageName, null, null, null, null, null, null, null);
return packageName;
public synchronized Class loadClass(String name, boolean resolve) throws
ClassNotFoundException {
name = name.replaceAll("/", ".").replaceAll(".class", "");
//Try to locate the Class in cashe
Class c = (Class) m_cache.get(name);
//Try to locate the Class in the System Class Loader
if (c == null) {
try {
c = ClassLoader.getSystemClassLoader().loadClass(name);
catch (Exception ex) {}
else {
m_logger.log(Level.FINEST, "Class '" + name + "' found in cache");
//Load the class from byte array
if (c == null) {
String resourceName = name;
if (!resourceName.endsWith(".class")) {
resourceName = resourceName.concat(".class");
//Retrieve class byte representation
if (resourceName.indexOf(".") != -1) {
resourceName =
resourceName.replaceAll("\\.", "/").replaceAll("/class", ".class");
//Use the ByteStreamClassLoader to load the class from byte array
byte[] classByteArray = null;
try {
classByteArray = getResourceBytes(resourceName);
catch (IOException ex1) {
throw new ClassNotFoundException(
"Could not load class data." + ex1.getMessage());
m_logger.log(
Level.FINEST, "Loading class '" +
name + "' Byte Length: " + classByteArray.length);
String p = definePackage(name);
c = defineClass(
name,
classByteArray,
0,
classByteArray.length,
ByteStreamClassLoader.class.getProtectionDomain());
m_cache.put(name, c);
if (resolve) {
resolveClass(c);
return c; -
Calling virtual function recursively
Hello,
I have a virtual function foo() in class A which, under certain conditions, will call itself.
In a class B, which is derived from A, I am overriding foo() to call super.foo() and then execute come code.
My question is:
When the code in class A executes, the recursive call this.foo() will call the function in class B (because I am in a class B object), no?
If it does, what syntax can I use to make it call the function in the context of class A, although the code is running in an object of class B?
Thank you.Yes, and the obvious solution is to move the implementation in A out to a private recursive method foo_inner() and get A.foo() to just call foo_inner().
-
VPD: Problems calling a function on another schema
Here's the setup:
I've create a schema called "AllYourBase". It contains all of my tables, views, functions, procs, etc.
These tables are protected by a DBMS_RLS policy. The policy uses a function to define its predicate which looks like this:
create or replace function tous_filter(schemaName varchar2, tableName varchar2)
return varchar2 is
begin
return 'account = sys_context(''USERENV'', ''CLIENT_IDENTIFIER'')';
end;
All of the tables have an account column for this to work. So far, this is a pretty basic VPD setup.
I have other db users that login and view data in the "AllYourBase" schema.
So when "ArbyLong" logs in, I set sys_context('USERENV', 'CLIENT_IDENTIFIER') to "ArbyLong", and when he runs a query, he gets back his rows.
Now, "AllYourBase" has several functions. Here's a very contrived, simplified example of one (but it illustrates the issue I'm running into just fine):
create or replace function getUserID
return integer is retval integer;
begin
select user_id into retval from users;
return (retval);
end;
When "ArbyLong" runs the equivalent query (select user_id from users), he gets back the one row where the account column is equal to "ArbyLong", as expected.
But this getUserID function lives in the "AllYourBase" schema. And here's the catch: I've made "AllYourBase" exempt from the policies by running "grant exempt access policy to AllYourBase".
When "ArbyLong" runs the function getUserID, it runs in the "AllYourBase" schema and pulls ALL of the rows from the users table.
This particular function simply errors out (since it's only expecting one row), but other functions are returning data that the logged in user shouldn't see.
So even though there are policies in place, by calling a function on another schema who is exempt from the policies, a user is able to see all returned data and not just the rows they are normally limited to.
Ultimately my question is this: Is there a way to enforce VPD policies when a user calls a function that lives in another schema?
Doing my own research, the answers I've come up with are:
* Don't use "grant exempt policy"!
* Put the function directly into the users' schemas. So "ArbyLong" would have his own getUserID function that would look at the "AllYourBase" users table.
I'd rather not do either of these, so does anyone have any other ideas? If it turns out these are the only solutions, then I'll go with one of them.
Thanks!Need more info. Are you using a ViewStack or other navigator container, and trying to access a view that has not been displayed yet, due to deferred instantiation?
If this post answers your question or helps, please mark it as such.
Greg Lafrance - Flex 2 and 3 ACE certified
www.ChikaraDev.com
Flex Training and Support Services -
Problems calling a function from another function
Hello all.
I am trying to create a function that will loop a few other function.
Basically the main function is this
private function publish(event:MouseEvent):void
if (doPublish.label == 'Publish')
// create a new NetStream object for video publishing
nsPublish = new NetStream(nc);
nsPublish.addEventListener(NetStatusEvent.NET_STATUS, nsPublishOnStatus);
// set the buffer time to zero since it is chat
nsPublish.bufferTime = 0;
// publish the stream by name
nsPublish.publish(publishName.text);
// add custom metadata to the stream
var metaData:Object = new Object();
metaData["description"] = "Chat using VideoChat example."
nsPublish.send("@setDataFrame", "onMetaData", metaData);
// attach the camera and microphone to the server
nsPublish.attachCamera(camera);
nsPublish.attachAudio(microphone);
doPublish.label = 'Stop';
else
// here we are shutting down the connection to the server
nsPublish.attachCamera(null);
nsPublish.attachAudio(null);
nsPublish.publish("null");
nsPublish.close();
doPublish.label = 'Publish';
I am then trying to call that function like this
protected function startloop():void {
publish(event);
But i get the error Access of undefined property event.
Any ideas on how i can call this function ? I need to call it as part of a loop against a timer..
Thanks in advanceNeed more info. Are you using a ViewStack or other navigator container, and trying to access a view that has not been displayed yet, due to deferred instantiation?
If this post answers your question or helps, please mark it as such.
Greg Lafrance - Flex 2 and 3 ACE certified
www.ChikaraDev.com
Flex Training and Support Services -
Problem calling Oracle function from Access 2007 / ADO
Hopefully, I'm posting this in the correct forum. I'm also posting on an Access forum as I'm not entirely sure where the issue lies.
I'm calling an Oracle function from Access 2007 using an ADO Command object.
The function takes three input parameters and has a return value and an output parameter. The output parameter is a BLOB, and the return value is varchar2 (either "T" or "N") based on the outcome of the function.
If I pass correct values to the function, I get the following error message (errs out on the command.execute line):
Run-time error '-2147467259 (80004005)':
[Oracle][ODBC][Ora]ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 1
Here's the function:
FUNCTION GET_ITEMREV_ATTACH(P_ORGANIZATION_ID IN NUMBER,
P_INVENTORY_ITEM_ID IN NUMBER,
P_REVISION IN VARCHAR2,
X_DRAWING OUT BLOB) RETURN VARCHAR2 IS
RESULT VARCHAR2(1);
BEGIN
RESULT := 'T';
BEGIN
SELECT L.FILE_DATA
INTO X_DRAWING
FROM FND_ATTACHED_DOCUMENTS AD,
MTL_ITEM_REVISIONS_B IR,
FND_DOCUMENTS_TL D,
FND_LOBS L
WHERE AD.ENTITY_NAME = 'MTL_ITEM_REVISIONS' AND
AD.PK1_VALUE = IR.ORGANIZATION_ID AND
AD.PK2_VALUE = IR.INVENTORY_ITEM_ID AND
AD.PK3_VALUE = IR.REVISION_ID AND
AD.CATEGORY_ID = 1001216 AND
D.DOCUMENT_ID = AD.DOCUMENT_ID AND
D.LANGUAGE = 'US' AND
L.FILE_ID = D.MEDIA_ID AND
IR.ORGANIZATION_ID = P_ORGANIZATION_ID AND
IR.INVENTORY_ITEM_ID = P_INVENTORY_ITEM_ID AND
IR.REVISION = P_REVISION;
EXCEPTION
WHEN OTHERS THEN
RESULT := 'N';
END;
RETURN(RESULT);
END GET_ITEMREV_ATTACH;
Here's the VB code I'm using to call the function:
Private Sub Command8_Click()
Dim CMD As New ADODB.Command
Dim conn As ADODB.Connection
Dim Param1 As ADODB.Parameter
Dim Param2 As ADODB.Parameter
Dim Param3 As ADODB.Parameter
Dim ParamBlob As ADODB.Parameter
Dim ParamReturn As ADODB.Parameter
Set conn = New ADODB.Connection
With conn
.ConnectionString = "Driver={Oracle in OraHome92};Dbq=OAPLY;UID=***;PWD=*******"
.CursorLocation = adUseClient
.Open
End With
Set CMD = New ADODB.Command
Set CMD.ActiveConnection = conn
CMD.CommandText = "immi_attach_pub.get_itemrev_attach"
CMD.CommandType = adCmdStoredProc
Set ParamReturn = CMD.CreateParameter("RESULT", adVarChar, adParamReturnValue, 1)
CMD.Parameters.Append ParamReturn
Set Param1 = CMD.CreateParameter("P_ORGANIZATION_ID", adInteger, adParamInput, 1, 6)
CMD.Parameters.Append Param1
Set Param2 = CMD.CreateParameter("P_INVENTORY_ITEM_ID", adInteger, adParamInput, 4, 5207)
CMD.Parameters.Append Param2
Set Param3 = CMD.CreateParameter("P_REVISION", adVarChar, adParamInput, 2, "04")
CMD.Parameters.Append Param3
Set ParamBlob = CMD.CreateParameter("X_DRAWING", adLongVarBinary, adParamOutput, 200000)
CMD.Parameters.Append ParamBlob
CMD.Execute , , adExecuteNoRecords *** this is where the error occurs
conn.Close
MsgBox CMD.Parameters("RESULT")
End Sub
I've tried using different data types for the varchar2 parameters (adVarChar, adBSTR, adChar) with no difference.
If I pass a bogus value for Param3...."'04'"...the function returns "N" indicating that it actually executed something. But, when I pass the correct value "04", it returns the above mentioned error.
I can execute the function in PL/SQL just fine, so I'm thinking there's something wrong with the parameters, datatype, or other definitions on the Access side.
Does anyone have any thoughts? I'm at a dead end with this. Sorry for the long post. Thank you.I tried your code with 11107 ODBC/client/database (but with a NULL output blob for convenience sake) and got no errors.
If you're using 92 ODBC/client, you may want to try upgrading to something more current, or at least getting the latest patch(9208) to see if that helps. Since it works for me I'm guessing it may be a resolved bug in that version.
Hope it helps,
Greg -
Problem calling native functions
Ok, I generate a dll with some native functions, but when I want to use one of the native functions I get the error:
java.lang.UnsatisfiedLinkError: pruebas.TestClass.myFunction(II)I
where pruebas.TestClass is the class that class the native function myFunction(int, int)...
I get the same error when I do not load the dll, can somebody help me solve this error
thanks a lot
God bless you
--Chemahmm, never done this on windows so I can't be too sure. You can try setting java.library.path and see if it helps.
http://www.inonit.com/cygwin/jni/helloWorld/load.html
(the command wopuld be java -Djava.library.path=YOURPATH yourapplication) -
How to call C function in .m file from another function in a .mm file
I am making an interface class between a C library and an objetive C application.
I have not problem calling function the C library from .mm funstions,
but I am having problems calling .m functions from the .mm class.
here is an example of what I mean.
here in my .m vector file
*struct dVector*
* float m_x;*
* float m_y;*
* float m_z;*
* float m_w;*
*struct dVector InitVector (float x, float y, float z, float w);*
*struct dVector AddVector (struct dVector* A, struct dVector* B);*
*struct dVector SubVector (struct dVector* A, struct dVector* B);*
here is my .mm class
*#import <Foundation/Foundation.h>*
*@interface iNewton : NSObject*
* void* m_world;*
*-(id) init;*
*-(void) dealloc;*
-(void) CreateBox: (Entity*) ent: (int) shapeId;*
@end
here is the implemrntation of function funtion CreateBox in a .mm file
[code]-(void*) CreateBox: (Entity*) ent: (int) shapeId
struct dVector minBox;
struct dVector maxBox;
// this is fine
[ent GetBBox: &minBox: &maxBox];
//calculate the box size and dimensions of the physics collision shape
// this report a link errors, and I do no knwo why
struct dVector size = SubVector(&maxBox, &minBox);
struct dVector origin = AddVector (&maxBox, &minBox);
// thsi work without problemen
return NewtonCreateBox ((NewtonWorld*) world, size.m_x, size.m_y, size.m_z, shapeId, &offset.mfront.mx);
I get these compiler errors
Building target “tutorial102AddingRigidBody” of project “newton_iPhone” with configuration “Debug_Emulation” — (3 errors)
cd /Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newton_iPhone
setenv MACOSXDEPLOYMENTTARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr /bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.0 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2 .1.sdk -L/Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newtoniPhone/build/DebugEmulation-iphonesimulator -L/Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newton_iPhone/../sdk -F/Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newtoniPhone/build/DebugEmulation-iphonesimulator -filelist /Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newtoniPhone/build/Debug_Emulation-iphonesimulator/tutorial_102_AddingRigidBody.build/ Objects-normal/i386/tutorial_102AddingRigidBodies.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework CoreGraphics -lnewton_iPhoneEmulation -o /Users/juliojerez/Desktop/NewtonMac/NewtonSDK/newtoniPhone/build/Debug_Emulation-iphonesimulator/tutorial_102_AddingRigidBodies.app/ tutorial_102AddingRigidBodies
Undefined symbols:
"AddVector(dVector*, dVector*)", referenced from:
-[iNewton CreateBox::] in iNewton.o
"SubVector(dVector*, dVector*)", referenced from:
-[iNewton CreateBox::] in iNewton.o
"Scale(dVector*, float)", referenced from:
-[iNewton CreateBox::] in iNewton.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
"AddVector(dVector*, dVector*)", referenced from:
-[iNewton CreateBox::] in iNewton.o
"SubVector(dVector*, dVector*)", referenced from:
-[iNewton CreateBox::] in iNewton.o
"Scale(dVector*, float)", referenced from:
-[iNewton CreateBox::] in iNewton.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Build failed (3 errors)
Basically I can call objective C class methods from .mm files,
but I can not call functions who are not members of a class from .mm funtions.
Does any one knows how I can solve this?
I have two books on objective C and neither show how to do that.
Please I will apreciate if some one can help me with this.
Julio Jerezjulio jerez wrote:
// this is fine
[ent GetBBox: &minBox: &maxBox];
why will tha be wrong?
ent is a objective C class with a method GetBBox
wich I use in hundred of places with out problem.
Beside that is not the problem that.
Well, you've got me on this one. You are correct. Apparently you don't need to specify the parameter names. Still, I strongly encourage you to use parameter names. Even though they apparently aren't required, I've never seen them not used. I would have expected to see:
[ent GetBBoxMin: & minBox max: & maxBox]
The problem is calling C function that are declared in .m files.
if you read the errors, they are linking errors not compiler errors.
this is a C function that is declared in a .m file
struct dVector size = SubVector(&maxBox, &minBox);
beside I also use those functions in many other place as well in teh project and they work.
If it helps I can post a link to the a download place to the xcode project maybe it is eassy to see what I am trying to do.
That would probably be a good idea.
Normally, all you need is
extern "C"
but there is so much missing from what you've posted that I can't tell for sure what is going on. -
Trying to call a function from C#
Hi all,
I am having problems calling a function that returns a sys refcursor and takes a varchar2 as an input. From the SQL Developer IDE I see that the function is run like
DECLARE
X_AR_MHTR VARCHAR2(200);
v_Return sys_refcursor;
BEGIN
X_AR_MHTR := 697678;
v_Return := CMS_SMS.FOR_WEB.WEB_STATION_1(
X_AR_MHTR => X_AR_MHTR
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
:v_Return := v_Return; --<-- Cursor
END;
here is my C# code
public static void getTilemetriseis(bool isLemessos, string AMSet, out OracleDataReader dr)
DataSet ds = new DataSet();
OracleDataAdapter ad = new OracleDataAdapter();
OracleCommand cmd = new OracleCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "CMS_SMS.FOR_WEB.WEB_Station_1";
if (isLemessos)
cmd.Parameters.Add("X_AR_MHTR", OracleDbType.Varchar2, ConfigurationManager.AppSettings["LemessosArMhtr"].ToString(), ParameterDirection.Input);
cmd.Parameters.Add(new OracleParameter("anexoflCur", OracleDbType.RefCursor, ParameterDirection.ReturnValue));
// ad.SelectCommand.CommandText = string.Format(@"select m_code,ar_mhtr,city,address,stcode
// from cms_sms.FOR_WEB.flowmetersall where ar_mhtr = {0}
// order by length(ar_mhtr),ar_mhtr", ConfigurationManager.AppSettings["LemessosArMhtr"].ToString());
else
cmd.Parameters.Add("X_AR_MHTR", OracleDbType.Varchar2, "697678", ParameterDirection.Input);
cmd.Parameters.Add(new OracleParameter("v_Return", OracleDbType.RefCursor, ParameterDirection.ReturnValue));
// ad.SelectCommand.CommandText = string.Format(@"select m_code,ar_mhtr,city,address,stcode
// from cms_sms.FOR_WEB.flowmetersall where ar_mhtr= -1
// order by length(ar_mhtr),ar_mhtr", AMSet);
cmd.Connection = OracleDBManager.getOracleCMSConnection();
cmd.ExecuteNonQuery();
dr = (OracleDataReader)cmd.Parameters["v_Return"].Value;
cmd.Connection.Close();
The error rises on cmd.ExecuteNonQuery() and is described as
ORA-06550:
PLS-00306: wrong number or type of argument
Any ideas?Off the top of my head, your parameter type on the second parameter is wrong. The function doesn't have a return value, one of the parameters contains it. So the second parameter's type can't be ReturnValue (should be output).
Either that or change the function to only have one parameter and add RETURN sys_refcursor into the definition, at which point you can use ReturnValue.
Here's an example: http://stackoverflow.com/questions/1773534/what-is-the-right-way-to-call-an-oracle-stored-function-from-ado-net-and-get-the
Edited by: Tridus on Mar 20, 2013 10:24 AM -
I do not have a problem getting in the iTunes stores. My issue is once on the site I can not use the "search". It says there is a pure virtual function call R6025. How can I solve this problem? Do I have to create a new account? Do I have to uninstall and re-install? Thanks
Thanks so much for your feedback. I really appreciate any input here.
If someone from Adobe could GUARANTEE that this problem would go away if I
purchased CS4, I would pony up the cash and do it. However, I'm skeptical
about that because I just saw someone else post a message on the forum today
who is running CS4 and getting the exact same runtime error as me.
I'll try un-installing and re-installing as Admin, and if that doesn't work,
maybe I can find a used copy of CS3.
In the meantime, I'm also wondering if a Photoshop file can carry any sort
of corrupt metadata inside it once it has errored out? Reason I ask is, I
had to port all of my old PSD files to the new computer, and I only seem to
be getting this error when I attempt to work on one of the files that
previously got the runtime error when they were sitting on my XP machine.
When I create new files from scratch on this new computer, they seem to be
working just fine (at least, for now).
If so, I would probably be smart to never open those troublesome
"errored-out" files again. -
I downloaded latest update of iTunes (windows 7, 64bit) and have now the problem runtime error R6025 pure virtual function call (Microsoft Visual C runtime library) - Who would have a solution to that problem?
Thanks from Switzerland
<Edited by Host>For general advice see Troubleshooting issues with iTunes for Windows updates.
The steps in the second box are a guide to removing everything related to iTunes and then rebuilding it, which is often a good starting point unless the symptoms indicate a more specific approach. Review the other boxes and the list of support documents further down page in case one of them applies.
Your library should be unaffected by these steps but there is backup and recovery advice elsewhere in the user tip.
(I've asked the hosts to remove your email address)
tt2 -
"R6025 -pure virtual function call" Error While Use Adobe Media Encoder
I'm trying to use Adobe Media Encoder (CS3) to output a project to H.264. I have about 3 minutes of footage on the Premier Pro CS3 Timeline, all of it in Cineform AVI intermediate format. When I export the movie through AME and select 2-pass VBR, it gets through the first pass, but crashes at 50% on the second pass with the error:
"Microsoft Visual C++ Runtime Library
Runtime Error!
Program E:\Progra...
R6025
-pure virtual function call"
Any ideas what may be causing this error?Point taken...
I'm on a Dell XPS 720 Windows XP (32-bit) system, with all up-to-date service packs and patches. I have 4GB RAM installed, and Production Premium CS3, TMPGEncXPress and Cineform's Neo Scene. Neo Scene is a recent addition and the problem existed prior to its installation. I have two 7900GS graphics cards (each with 256MB video RAM), running in SLI mode.
I dual boot Windows XP: One system is "Messy" with all kinds of stuff installed. The other is "Clean" and has virtually nothing installed, except for the three suites previously mentioned. No anti-virus or anti-spyware software is installed on the Clean system. I get the error on both systems.
I saw the post from September 2007 reference vcredist_x86. I'll be trying that at my next opportunity, however, I'm not sure that will fix it, as I don't see why both systems would suffer from the same corruption. I'll also be swapping out RAM to see if that fixes the issue. -
Virtual function problem with SC 4.2
Hi
I'm using SC CC 4.2
[CC -V
CC: WorkShop Compilers 4.2 18 Sep 1997 C++ 4.2 patch 104631-04]
not the latest patch, I realize.
The following bit of code:
ProcessParameters *ppp = &(_config.process_params_);
ppp->save_to_file(String("abc"));
config.processparams_.save_to_file(String("xyz"));
does not work as I'd expect it to!
config.processparams_ is of type ProcessParametersEnhanced,
and the definition of this, and its base class, looks like:
class ProcessParameters
public:
virtual int save_to_file(String filename);
and
class ProcessParametersEnhanced : public ProcessParameters
public:
virtual int save_to_file(String filename);
(I've cut everything else out of the class definitions for clarity, and I've changed the names a bit as well, hopefully without typos).
ppp->save_to_file(String("abc"));
calls ProcessParameters::save_to_file(String)
even though ppp points to an instance of ProcessParametersEnhanced, and the function is virtual.
I've tried building a small test application, using the minimum class interfaces, but this works as I'd expect (it also works fine with gcc).
I'm getting deseperate. Is there a bug in SC4.2 whereby it fails to resolve virtual functions correctly?
TIA
Paul FloydOh well, it was an SC4.2 bug
Patch-ID# 104631-07
Keywords: C++ 4.2 SC4.2
Synopsis: SPARCompiler C++ 4.2: C++ 4.2 patch for Solaris 2.x
Date: Jul/17/98
4066271 C++ has a problem with a copy constructor using virtual and multiple inheritance
It seems as though the copy ctor doesn't copy the vtbl.
Cheers
Paul -
Hello
I work usually with large PDF documents, and I was trying to convert a PDF document of 1000 pages ONE THOUSAND PAGES, to little PDF documents of 10 MB each one.
When I tried to convert the PDF file into little ones, craaashhhhhhhhhhhhhhhhhh
I got this message:
Acrobat.exe Runtime Error! R6025 - pure virtual function call - Microsoft Visual C++ Runtime Library
This seems to be a BUG AS BIG A GRAND PIANO... so I would like someone from Adobe tell me how may I solve this problem or if they will release an update soon?
Thank youThis is a user to user forum and we don't post information here (or anywhere else public) about what may or may not be in future patch releases.
If you have a bug with an Adobe product you must report it using the correct form. -
Premiere CS5: R6025 - pure virtual function call
When I go to render the sequence, I get:R6025 - pure virtual function call and the program crashes.
the problem details are reporting:
Problem Event Name: APPCRASH
Application Name: Adobe Premiere Pro.exe
Application Version: 5.0.0.0
Application Timestamp: 4bb568b7
Fault Module Name: Backend.dll
Fault Module Version: 5.0.0.0
Fault Module Timestamp: 4bb529dd
Exception Code: 40000015
Exception Offset: 00000000001ba7eb
OS Version: 6.0.6001.2.1.0.256.6
Locale ID: 1033
Additional Information 1: 603b
Additional Information 2: 3ec9d140f10efeb2f0a7d02f968c360a
Additional Information 3: a863
Additional Information 4: 75c6e9df8ab75d63002e907cb106c2fa
Running Vista 64bit on a Dell T7400 with 12GB ram and Raid HDD's
Any thoughts?
Thanks
PaulI'm having the same issue:
Faulting application name: Adobe Premiere Pro.exe, version: 5.0.1.0, time stamp: 0x4bf119d2
Faulting module name: Backend.dll, version: 5.0.1.0, time stamp: 0x4bf0dba0
Exception code: 0x40000015
Fault offset: 0x00000000001baafb
Faulting process id: 0x15a8
Faulting application start time: 0x01cb1b96d983de39
Faulting application path: C:\Program Files\Adobe\Adobe Premiere Pro CS5\Adobe Premiere Pro.exe
Faulting module path: C:\Program Files\Adobe\Adobe Premiere Pro CS5\Backend.dll
Report Id: 6d0f1532-878a-11df-a3c5-81e14690b8b6
Crashing during rendering.
I 'm running Windows 7, 64 bit, Dell Covet 6400, Nvida Quadro FX3700M, 4gb ram.
Issue occurs at the same frame, 802 of 2961 everytime I make at attempt to render.I've also noticed the Premier remains in memory after the crash.
Has this been reported to Adobe or added to the bus list? If not, any idea how to get it added?
thanks
Maybe you are looking for
-
Firefox freezes at random times and I have to end process, restart to use it
I have no problems with running Firefox. I got a new laptop, downloaded Firefox and have had problems with it randomly freezing. It will attempt to load a page, freeze and won't unfreeze no matter how long I wait. I have to open the task manager and
-
Hello people, Need a little help here, I recently purchased my first ever MacBook Pro and my dearest wife is looking at using an iPad 2 to do some excel spreadsheets for her new cake enterprise. The question i have is can excel for Mac be transferred
-
ANN: Web 2.0 and it's impact on workplace learning - EeLS
I am pleased to announce that we have just signed up Jonathan Vinoskey to speak about Web 2.0 and it's impact on workplace learning at the European eLearning Summit. Have a look at the session description at http://www.elearningsummit.eu/sessions whe
-
Protect acess to shared variable network
Hi, I have a network with applications on several PCs and I used variable of type network-published for communicate between them. If somebody will do one conection with my network, because there are possibility of conection with my switch, then i can
-
TS3694 Error -1 in ipad 3 wifi + 4g
My ipad restarts on its own and when I'm trying to restore it, it says error -1. Please advise