Hi l4-hackers,
I am currently having some issues with dice-3.3:
First of all, the dice-generated code differs in header- and client file,
meaning that the header defines functions with
int DICE_CV
somefunction()
while the outcoming c-file is
int
somefunction()
This leads to compile errors due to conflicting declarations...
But as soon as you remove DICE_CV, everything compiles fine.
The second problem I have regards IPC-calls:
I am using the latest otc-snapshot (2008-12-10 with l4linux-2.6.27) and have
written a small IDL-interface as follows:
dummy.idl:
==
interface dummy
{
void hello(void);
}
==
The server (running under L4Linux) registers itself at the names-service as
"dummy" and starts the server_loop... It implements the dummy_hello_component as
follows:
==
void
dummy_hello_component (CORBA_Object _dice_corba_obj,
CORBA_Server_Environment *_dice_corba_env)
{
/* do nothing*/
printf("Hello\n");
}
==
Additionally, I have written 2 clients, one native L4 application and one based
on L4Linux, which implement the client-stub as follows:
==
static l4_threadid_t threadId;
static CORBA_Environment env;
names_query_name("dummy", &threadId);
LOG_printf("Dummy found with threadId: %x\n",threadId);
dummy_hello_call(&threadId, &env);
==
The native client (started via bmodfs) receives a pagefault, cause it is trying
to write?! to address 0:
==
dummytest| Dummy found with threadId: 11a0001
dummytest| L4RM: [PF] write at 0x00000000, ip 02000272, src 11.02
dummytest| [11.0] l4rm/lib/src/pagefault.c:81:__unknown_pf():
dummytest| unhandled page fault
--PANIC, 'g' for exit------------------------------------IP: 02005755
[dummy.rm] (11.00) jdb:
==
And the L4Linux-client crashes with a segfault:
==
dummy_t[42]: segfault at 2 ip 08048312 sp bf4092ec error 6 in
dummy_test[8048000+76000]
==
The strange thing is: If I compile the idl-file with dice-3.2.1, the dummy
example works, BUT as soon as my interfaces get more complex, e.g., something
like this:
int write ([in] long start,
[in] long offset,
[in] long bytes_to_write,
[in, size_is(write_len), max_is(MAX_PAGE_SIZE)] char *write_buffer,
[out] long *write_len);
IPC crashes with pagefaults / segfaults again even with dice-3.2.1...
My Fiasco-config is attached.
Do you have any ideas where the problem might be?
Do I have to pay attention to specific configuration options, if the IPC-server
is running in an L4Linux?
Thanks in advance and best regards,
Marcel Selhorst
--
Sirrix AG security technologies -
http://www.sirrix.com
Marcel Selhorst eMail: m.selhorst@sirrix.com
Tel +49(234) 61 0071-199 Fax +49(234) 61 0071-599
get my public key from keyserver, key id: 0x7C9821CC
Fingerprint 4138 E617 E62E 79D3 E663 BE5A 14E7 1CD8 7C98 21CC
Vorstand: Ammar Alkassar (Vors.), Ahmad-Reza Sadeghi, Christian Stüble
Vorsitzender des Aufsichtsrates: Prof. Dr. Kai Rannenberg
Sitz der Gesellschaft: Homburg/Saar, HRB 3857 Amtsgericht Saarbrücken
This message may contain confidential and/or privileged information.
If you are not the addressee, you must not use, copy, disclose or
take any action based on this message or any information herein.
If you have received this message in error, please advise the sender
immediately by reply e-mail and delete this message.
#
# Automatically generated make config: don't edit
# Fiasco kernel version: SVN
# Fri Jan 30 14:59:12 2009
#
#
# Target configuration
#
CONFIG_IA32=y
# CONFIG_AMD64 is not set
# CONFIG_ARM is not set
CONFIG_PF_PC=y
# CONFIG_PF_UX is not set
# CONFIG_PF_REALVIEW is not set
# CONFIG_PF_INTEGRATOR is not set
# CONFIG_PF_SA1100 is not set
# CONFIG_PF_XSCALE is not set
CONFIG_ABI_V2=y
# CONFIG_ARM_PXA is not set
# CONFIG_ARM_SA is not set
# CONFIG_ARM_920T is not set
# CONFIG_ARM_926 is not set
# CONFIG_ARM_1176 is not set
# CONFIG_ARM_MPCORE is not set
# CONFIG_ARM_CORTEX_A8 is not set
# CONFIG_IA32_486 is not set
CONFIG_IA32_586=y
# CONFIG_IA32_686 is not set
# CONFIG_IA32_P2 is not set
# CONFIG_IA32_P3 is not set
# CONFIG_IA32_P4 is not set
# CONFIG_IA32_PM is not set
# CONFIG_IA32_K6 is not set
# CONFIG_IA32_K7 is not set
# CONFIG_IA32_K8 is not set
# CONFIG_AMD64_K8 is not set
CONFIG_SCHED_PIT=y
# CONFIG_SCHED_RTC is not set
# CONFIG_SCHED_APIC is not set
# CONFIG_WORKAROUND_AMD_FPU_LEAK is not set
CONFIG_REGPARM3=y
#
# Kernel options
#
CONFIG_HANDLE_SEGMENTS=y
# CONFIG_PL0_HACK is not set
CONFIG_TASK_CAPS=y
# CONFIG_USER_LOCKS is not set
CONFIG_CONTEXT_4K=y
CONFIG_IO_PROT=y
# CONFIG_IO_PROT_IOPL_3 is not set
CONFIG_SYNC_TSC=y
CONFIG_FINE_GRAINED_CPUTIME=y
#
# Debugging
#
CONFIG_INLINE=y
# CONFIG_NDEBUG is not set
# CONFIG_NO_FRAME_PTR is not set
# CONFIG_STACK_DEPTH is not set
# CONFIG_LIST_ALLOC_SANITY is not set
# CONFIG_BEFORE_IRET_SANITY is not set
CONFIG_GSTABS=y
# CONFIG_WATCHDOG is not set
CONFIG_SERIAL=y
CONFIG_JDB=y
# CONFIG_JDB_LOGGING is not set
# CONFIG_JDB_ACCOUNTING is not set
# CONFIG_JDB_MISC is not set
CONFIG_POWERSAVE_GETCHAR=y
# CONFIG_WARN_NONE is not set
# CONFIG_WARN_WARNING is not set
CONFIG_WARN_ANY=y
#
# Compiling
#
CONFIG_CC="gcc"
CONFIG_CXX="g++"
CONFIG_HOST_CC="gcc"
CONFIG_HOST_CXX="g++"
# CONFIG_VERBOSE is not set
# CONFIG_MAINTAINER_MODE is not set
CONFIG_LABEL=""
CONFIG_EXPERIMENTAL=y
CONFIG_PERF_CNT=y
CONFIG_BIT32=y
CONFIG_WARN_LEVEL=2
CONFIG_XARCH="ia32"
CONFIG_IA32_TARGET="Intel Pentium"
CONFIG_ABI="v2"
CONFIG_DECEIT_BIT_DISABLES_SWITCH=y