Collision with 2 CharacterControllers not precise

Hello guys, I am having a problem, I have two GameObjects, one is the player, another is a dog movimented with a simple IA. Both moviments are based on the Lerpz 2d tutorial. So both have a CharacterController attached.

With the player and the ground, the collision detection is OK. Also I am using some other objects that I need to do some calculations with the normal of the collision and it is working fine too, these ones use basically box colliders. The dog also works well with the ground.

Well, the problem is, the player collides right with the dog. They never “enter” inside the other. But the function OnControllerColliderHit is rarely called. I have to “rub” the character with the dog to active the function. I put a counter just to confirm it, I can do a lot of jumps over the dog without change the counter, can someone give me a help. The code used is:

private var platformerController : PlatformerController = null; 
private var counterManager : CounterManager = null;                                 
private var x : int = 0;
private final var RECOVER_TIME : float = 1; //Time to recover after get hurt
private var lastHitTime : float = -10;	// The last time that the player has been hurted
private var canBeHurted = true; // If the player can be hurted
                                     
function Start()
{
	platformerController = gameObject.GetComponent( PlatformerController );
	if( !platformerController )
		Debug.Log( "This object doesn't have a platformerController " );
		
	// This must be loaded in other level, never in the play level
	counter = GameObject.Find( "Counter" );
	if ( counter == null )
	{
		Debug.Log( "PlayerLife can't find the Counter object ");	
	}
	
	counterManager = counter.GetComponent( CounterManager );
}

//Called when the player receives a damage
function DidHit()
{
	counterManager.setHealth( counterManager.getHealth() - 1 );
	lastHitTime = Time.time;
	if( counterManager.getHealth() < 1 )
	{
		Destroy( gameObject );
	}
}
                                     

function OnControllerColliderHit ( hit : ControllerColliderHit )
{
	Debug.Log( x++ );
	
	//If the character can't be hurted, finish
	if( !canBeHurted || ( lastHitTime + RECOVER_TIME ) > Time.time )
	{
		return;
	}
	
	//Checking risks
	
	//Enemies
	var enemyLife : EnemyLife = hit.gameObject.GetComponent( EnemyLife );
	if( enemyLife ) //&& !platformerController.dash.isDashing )
	{
		SendMessage ( "DidHit", SendMessageOptions.DontRequireReceiver );
		return;
	}
	
	//Other traps
	//TODO:
}

Thanks for the attention =)

Well I solved this problem using a empty child-prefab with a trigger collider. Btw I noticied if I put two colliders in the same object intercepeting some space between the colliders, only one of these colliders will work. Is that true?