Proof/CINT limitation?

Dear ROOT,
I have strange problem, I have class Base, Array A, B and C, four of them inherits from Base class Array contain objects of class C:

class Array : public Base{ protected: Int_t fSize; Base **fBaseArray;//[fSize] }
Class Array if filled by class Task it’s look like

Task::Add(Base *b){
    array->Add(b); // Array->fBaseArray[fSize++]=b;
}

Code works on
a) single machine (all cases)
b) PROOF (if I add to class Array A or B)
If add class C my “Array” then code crash, only difference is that C source files are in different directory (Task include Array.h witch contains definitions of Array A B). Crash i caused because fBaseArray[i] is NULL (event if fBaseArray[0]=A and fBaseArray[1] = C both of them are NULL if one object is C class)
When I put code of C class into Array.h code works :open_mouth: .
Why? because Array inherits from Base and contain Base objects? or because CINT limitation (C.h is in complete different directory) or because C is in different library (all of them are loaded).
For know only solution is put code C into Array.h but I would like to put them wherever I want.

Hello,

Sorry for the late reply.
You should be a bit more specific about how you use the code locally and in PROOF.
The ideal case would be if you could provide a way to reproduce the problem.

Anyhow, PROOF workers have a different working directory, so relative include paths may lead to problems.
The directory with Array.h needs to present on the include path on workers (TProof::AddIncludePath).

Regards,
G. Ganis